socket.io javascript客户端在重新启动服务器后无法重新连接

时间:2016-04-22 16:29:24

标签: node.js socket.io socket.io-1.0

我正在使用" socket.io":" 1.4.5"," socket.io-redis":" 1.0。 0&#34 ;.使用socket-io-client的javascript客户端似乎很乐意连接到服务器,除非服务器重新启动。连接尝试失败,触发“connect_error”#39;带有消息的事件' {"消息":" xhr轮询错误","输入":" TransportError","描述":0"}&#39 ;.如果我通过浏览器重新启动连接工作正常。我还注意到,如果我在事件处理程序中为' connect_error'设置断点。并等待几秒钟,连接尝试最终成功。我在客户端代码中遗漏了一些配置设置?这是我的客户端代码

var socketConnectParams = {'max reconnection attempts': 150};  
    socketConnectParams['reconnection'] = true;
    socketConnectParams['reconnectionDelay'] = 5000;
    socketConnectParams['reconnectionDelayMax'] = 15000;
    var socket = io('http://localhost:8888', socketConnectParams);

    socket.on('connect', function () { });

    socket.on('connect_error', function(error) {
      dLog("connection error event received." + JSON.stringify(error));
    });

1 个答案:

答案 0 :(得分:3)

我收听“disconnect”事件以重新绑定新的“connect”事件。这样,如果重新启动服务器,本地客户端将检测到这一点并创建一个新的侦听器,然后服务器再次出现。也许你可以试试。

        socket.on('disconnect', function(){
            socketCleanup(); // this is a function to cleanup all listeners, just in case, so you can restart fresh
            socket.on('connect', function(){
                socketConnect();
            });
        });