我创建了一个简单的 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 Error: Network Error 12029, A connection with the server could not be established
Edge 的 12.10240 版本正在发生这种情况。
有关 here 的类似问题被问及但错误信息不同。
我尝试过的事情:
- IP -
localhost
,127.0.0.1
, 实际IP - 允许本地主机环回标志 - 打开和关闭
当尝试与不同的机器通信时,问题不会发生。
这是 Edge 的缺陷还是我做错了什么?
最佳答案
我有一个类似的问题,但它是在实际导航到浏览器中的页面时出现的。我可以使用短语 localhost 并且它工作正常,但是当我使用我的机器名称时我没有工作。我找到了 this forum他们建议您在管理员提示符下运行以下命令:
CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
为我工作。认为您可能会遇到某种形式的相同问题。
正如论坛所建议的那样,您现在也可以通过打开 Edge 并导航到“about:flags”来执行此操作,然后勾选“允许本地主机环回(这可能会使您的设备存在风险)”下的“开发者设置”。应该比将随机内容粘贴到命令提示符中更安全一些。
编辑:正如 tresf 在下面指出的那样,about:flags 中的环回复选框似乎已停止工作(作为修复),因此您将使用 CheckNetIsolation 命令,使 Edge 免除。
关于javascript - WebSocket 到本地主机在 Microsoft Edge 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31772564/