11

我创建了一个简单的 WebSocket 服务器,并尝试使用以下代码连接到它:

function test(name) {
    var ws = new WebSocket('ws://localhost:1234');
    ws.onopen = function () {
        ws.send('Hello from ' + name);
    }
}
test('Edge');

这在 Windows10 上的 Chrome 和 IE11 上运行良好,但是当我从 Edge 尝试时,onopen没有调用该函数,而是最终得到以下错误:

SCRIPT12029:WebSocket 错误:网络错误 12029,无法建立与服务器的连接

Edge 的12.10240版本正在发生这种情况。

此处询问了类似的问题,但错误消息不同。

我尝试过的事情:

  • IP - localhost, 127.0.0.1, 实际IP
  • 允许本地主机环回标志 - 打开和关闭

尝试与另一台机器通信时,不会出现问题。

这是 Edge 的缺陷还是我做错了什么?

4

1 回答 1

14

我遇到了类似的问题,但实际上是在浏览器中导航到页面时。我可以使用短语 localhost 并且它工作得很好,但是当我使用我的机器名称时我没有工作。我找到了这个论坛,他们建议您在管理员提示符下运行以下命令:

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

为我工作。以为您可能会看到某种形式的相同问题。

正如论坛建议的那样,您现在也可以通过打开 Edge 并导航到“ about:flags ”,然后在“开发人员设置”下勾选“允许本地主机环回(这可能会使您的设备处于危险之中)”来执行此操作。应该比将随机内容粘贴到命令提示符中更安全一些。

编辑:正如 tresf 在下面指出的,about:flags 中的环回复选框似乎已停止工作(作为修复),因此您将使用 CheckNetIsolation 命令来使 Edge 豁免。

于 2015-09-24T17:14:30.350 回答