Socket.io res 没有统一

Posted

技术标签:

【中文标题】Socket.io res 没有统一【英文标题】:Socket.io res doesn't get on unity 【发布时间】:2015-07-28 14:22:46 【问题描述】:

我在 Asset Store 上使用 Socket.io 客户端。(https://www.assetstore.unity3d.com/kr/#!/content/21721)

当我改变场景时,套接字响应不起作用。

例如

场景 A 有 socketIOComponent prefeb。 代码在这里。 (它是删除 'emit code' 和 'socket.on("res",function())' )

GameObject go;
public SocketIOComponent socket;

private static Network _instance;

public static Network instance
    get
        if(_instance == null)
            _instance = new Network();
        

        return _instance;
    


void Start () 
    go = GameObject.Find("SocketIO");
    socket = go.GetComponent<SocketIOComponent> ();

    DontDestroyOnLoad (this);


void Awake()
    if (_instance == null) 
        _instance = this;
        DontDestroyOnLoad (this);
     else 
        if(this != _instance)
            Destroy(this.gameObject);
        
    

它是实现单例模式。

场景B代码在这里。

Network net;
SocketIOComponent socket;
void Start () 
    net = Network.instance;
    socket = net.GetComponent<Network> ().socket;

    socket.On ("res2", testing);


void OnGUI()
    if (GUI.Button (new Rect (200, 200, 50, 50), "Scene 2")) 
        JSONObject js = new JSONObject();
        js.AddField("Test","test");
        socket.Emit("test2",js);
    


void testing(SocketIOEvent e)
    Debug.Log("12345");

Node.js 服务器在“OnGUI”函数中获取请求“test2”。 但是“res2”的响应是行不通的。

服务器代码在这里

socket.on("test2", function(data)
       socket.emit("res2");
 );

。我不明白这种情况。因为场景 A 工作得很好(req, res) 而场景 B 只是工作请求。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我刚刚找到了解决方案。

需要在函数Awake中的SocketIOComponent实例上添加DontDestroyOnLoad。

函数Awake一定是这样的(这是我的函数Awake):

public void Awake ()

    if (instance == null) 
        instance = this;
     else if (instance != this)
    
        Destroy (gameObject);
    
    DontDestroyOnLoad (socketIO);
    DontDestroyOnLoad (gameObject);

【讨论】:

以上是关于Socket.io res 没有统一的主要内容,如果未能解决你的问题,请参考以下文章

跟我一起使用socket.io创建聊天应用

来自服务器的Socket.io触发器

如何在用户从帐户注销时断开事件触发(node.js + express socket.io)

重定向时丢失会话(node.js + socket.io)

socket.Io的简单使用

检索与 HTTP 请求相关的 socket.io 连接