在客户端重新启动socket.io

时间:2014-02-02 05:05:01

标签: node.js angularjs socket.io

我正在使用angularjs构建一个单页应用程序 - 我将一个消息套接字发送到为访客和用户打开的连接,以及其他特定用户。

因此我需要套接字来知道是否初始化用户或来宾的连接。由于我正在使用角度,我不会在用户登录时刷新页面,随后在页面刷新之后,用户不会收到他们的个人套接字通知。 (太多信息?道歉!)

简单问题 - 如何以编程方式(最好是从客户端)复制socket io在页面刷新(重新启动)上发生的情况。

试过这个

restart: function(){
    socket.disconnect();
    window.socket = io.connect();
}

并且它没有工作(只显示调用on disconnect函数,实际上没有重启连接),似乎找不到任何其他解决方案!

1 个答案:

答案 0 :(得分:0)

我使用WebSocket

以下是适用于我的代码片段:

function startSocket() 
        {

            if ("WebSocket" in window)
            {
                ws = new WebSocket("%%WEBSOCKET_URL%%");



                // Called when the websocket is opened
                ws.onopen = function()
                {
                   /* .... */
                };

                // Called when the websocket receives data
                ws.onmessage = function(evt) 
                { 
                    /* .... */
                    //dataTableDefault.push(evt.data);                         
                };

                // Called when the websocket is closed
                ws.onclose = function() { 

                };
            }
            else
            {
                alert("Browser doesn't support WebSockets!");
            }
        }

function stopSocket() 
        {

            try {
                ws.onopen = null;
                ws.onmessage = null;
                ws.onclose = null;
                ws.onerror = null;

                ws.close(); 

            } catch (e) {
                console.log('try/catch around location update'+e);
            }

        }

希望它会有所帮助,