我正在为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)