【问题标题】:Socket.io - server down handlingSocket.io - 服务器停机处理
【发布时间】:2014-10-23 15:40:28
【问题描述】:

我正在尝试编写简单的应用程序,该应用程序在服务器端使用 socket.io 和 node.js 提供数据。如果服务器已关闭,我想通知用户(例如,服务器向客户端提供网页并且在任何刷新服务器停止之前)。现在它会导致浏览器出现以下错误:

GET http://localhost:8080/socket.io/?EIO=2&transport=polling&t=1409325689935-6 net::ERR_CONNECTION_REFUSED 

我无法使用 socket.on('error'(...)) 事件捕获该事件,只要客户端无法连接到服务器,我就想显示一些消息。任何想法都将不胜感激:) 下面提供了初始化套接字的代码:

socket = io.connect(document.domain, {
    'sync disconnect on unload' : false
});

【问题讨论】:

    标签: javascript node.js sockets socket.io


    【解决方案1】:

    难道你不能通过这样的方式检查服务器是否为你提供 .js 文件吗?

    <script type="text/javascript" onload="loaded()" src="get_socket.js"></script>
    
    function loaded(){
    
    //this will only execute if the server is up
    
    }
    

    【讨论】:

    • 我想拦截提供的错误,以便客户端控制台窗口没有任何错误 - 但是,使用提到的解决方案不会阻止它们显示 - 感谢您这么快回复:)
    【解决方案2】:

    我不仅成功地将以下代码用于socket.io,还成功地用于您希望加载、执行或两者兼而有之的任何.js。请原谅我,因为我早就忘记了我最初是从哪里得到这个的,很可能就是这个网站。

    请注意,我只定制了 loadAndExecute 函数来处理无法通过回调加载文件的问题。

    var load,execute,loadAndExecute;
    load=function(a,b,c){var d;d=document.createElement("script"),d.setAttribute("src",a),b!=null&&d.addEventListener("load",b),c!=null&&d.addEventListener("error",c),document.body.appendChild(d);return d},
    execute=function(a){var b,c;typeof a=="function"?b="("+a+")();":b=a,c=document.createElement("script"),c.textContent=b,document.body.appendChild(c);return c},
    loadAndExecute=function(a,b,c){return load(a,function(){return execute(b)},function(){return c();})};
    

    这样使用:

    loadAndExecute("domain.com:80/socket.io/socket.io.js", function() {
        //it loaded, put main code here
    },
    function(){
        //failed to load, put error display code here
    });
    

    希望这可以帮助像它帮助我很多次的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-02
      • 2016-05-05
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      相关资源
      最近更新 更多