小编Ell*_*ott的帖子

Safari扩展:WebSocket连接失败调用onclose而不是onerror,也没有例外

我正在为Firefox,Chrome和Safari编写浏览器扩展程序.当尝试使用Safari扩展连接到WebSocket服务器时,没有服务器侦听特定端口,我的Safari扩展不会抛出异常,也不会调用错误.相反,正在调用Safari扩展的onclose处理程序.我也在控制台中看到这条消息:

[Error] WebSocket network error: The operation couldn’t be completed. Connection refused (global.html, line 0)
Run Code Online (Sandbox Code Playgroud)

在Firefox和Chrome上,它似乎正确处理它AFAIK并调用onerror.

我只是做这样的事情:

var socket = new WebSocket('ws://127.0.0.1:'+inPort, inHandlerName);
socket.binaryType = "arraybuffer";
Run Code Online (Sandbox Code Playgroud)

然后声明onopen,onclose,onerror和onmessage的处理程序.inPort是9000,inHandlerName是一个类似"global-handler"的字符串.我在每个WebSocket处理程序以及具有创建WebSocket的代码的函数中放置了异常处理程序,但我没有看到任何异常.

这是一个已知的问题吗?有没有办法找出连接是否失败?

编辑:这也发生在Safari的简单网页上:

        var theSocket = new WebSocket('ws://127.0.0.1:9000', 'global-message');

        theSocket.onopen = function()
        {
            console.log("onopen");
        };
        theSocket.onerror = function()
        {
            console.log("onerror");
        };
        theSocket.onmessage = function()
        {
            console.log("onmessage");
        };
        theSocket.onclose = function()
        {
            console.log("onclose");
        };
Run Code Online (Sandbox Code Playgroud)

javascript safari websocket safari-extension

5
推荐指数
1
解决办法
7750
查看次数

标签 统计

javascript ×1

safari ×1

safari-extension ×1

websocket ×1