当前位置: 首页 > 知识库问答 >
问题:

Safari扩展:WebSocket连接失败调用onclose和not onerror和no exception

卢毅
2023-03-14
[Error] WebSocket network error: The operation couldn’t be completed. Connection refused (global.html, line 0)

我只是在做这样的事情:

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

然后声明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");
        };

共有1个答案

晏经武
2023-03-14

这似乎不是它应该工作的方式,但在onclose消息中,我得到了一个事件参数,如下所示:

theSocket.onclose = function(event)

事件包含一个名为code的字段。当我不能连接到服务器时,代码值是1006。我目前已经修复了它,以便它检查是否在Safari中运行,然后检查:

if(event.code == 1006)

如果是这样,我将执行与Firefox和Chrome错误情况相同的处理。

 类似资料:
  • 问题内容: 我尝试使用nginx设置nodejs。但是当客户端尝试连接时,它将失败并显示… 那么如何启用websocket通信呢? 我目前的Nginx配置 问题答案: 首先,将您的nginx服务器升级到1.3或更高版本。 其次,我的nginx conf有效。您可以关注我的conf。

  • 错误:无法启动连接:错误:WebSocket无法连接。在服务器上找不到连接,endpoint可能不是信号器endpoint,服务器上不存在连接ID,或者存在阻止WebSocket的代理。如果有多台服务器,请检查是否启用了粘性会话。 WebSocketTransport.js:49WebSocket连接到“ws://xxxxxx/生产/网络服务/集线器/spreadhub”失败: Angular.t

  • 我正在使用套接字。io,应用程序由AWS提供。我收到一个浏览器控制台错误: websocket.js:54 WebSocket 连接到 'wss://www.tidee.com/socket.io/?EIO=4 客户代码: 服务器代码: 在 AWS 中,安全组接受端口 443,负载均衡器侦听端口 443。 应用程序在本地运行时工作(状态 101),并使用 协议。

  • 问题内容: 我使用NodeJS创建了一个应用程序,并且正在使用ws模块。如果我在本地主机上测试该应用程序,则它可以正常工作,并且连接websockets没有任何问题。现在,我已将应用程序上载到Openshift,当我尝试从客户端访问该应用程序时,它返回,这无法建立与Websocket的连接。 如果我在应用程序中拖入腻子, 则会收到 以下消息: 调试:这种类型的响应一定不能有主体。 忽略传递给end

  • 使用 jar 包 , 连接 websocket, 用域名的方式连接失败, 中间有通过 nginx 转发 用浏览器的控制台 new Websocket(wss://域名) 已经成功 nginx 配置正常的 , 用于 websocket 的配置添加了 使用 ws://域名 方式报 400 错误 用 wss://域名 方式 nginx 连请求都没收到 域名是买的, 是能通过验证的 使用 http 直接连

  • 我刚从自制软件在mac上安装了mysql 从终端它工作,我可以登录到mysql,但从Sequel Pro它说 无法连接到主机127.0.0.1,或者请求超时。 确保地址正确,并且您拥有必要的权限,或者尝试增加连接超时(当前为10秒)。 MySQL表示:无法加载身份验证插件“caching_sha2_password”:dlopen(/usr/local/lib/plugin/caching_sha