gpt4 book ai didi

javascript - Safari 扩展 : WebSocket connection failure calls onclose and not onerror and no exception

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:45 28 4
gpt4 key购买 nike

我正在为 Firefox、Chrome 和 Safari 编写浏览器扩展。当尝试使用没有服务器监听特定端口的 Safari 扩展连接到 WebSocket 服务器时,我的 Safari 扩展不会引发异常,也不会调用 onerror。相反,正在调用 Safari 扩展的 onclose 处理程序。我还在控制台中看到此消息:

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

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

我只是在做这样的事情:

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");
};

最佳答案

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

theSocket.onclose = function(event)

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

if(event.code == 1006)

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

关于javascript - Safari 扩展 : WebSocket connection failure calls onclose and not onerror and no exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26594331/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com