最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - WebSocket to localhost not working on Microsoft Edge - Stack Overflow

programmeradmin2浏览0评论

I've created a simple WebSocket server and am trying to connect to it with the following code:

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

This works fine from Chrome and IE11 on Windows10 but when I try from Edge, the onopen function isn't called, instead I eventually get the following error:

SCRIPT12029: WebSocket Error: Network Error 12029, A connection with the server could not be established

This is happening for version 12.10240 of Edge.

A similar problem was asked about here but the error message is different.

Things I tried:

  • IP - localhost, 127.0.0.1, the actual IP
  • Allow localhost loopback flag - both on and off

When trying to communicate with a different machine the problem does not occur.

Is this a defect in Edge or am I doing something wrong?

I've created a simple WebSocket server and am trying to connect to it with the following code:

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

This works fine from Chrome and IE11 on Windows10 but when I try from Edge, the onopen function isn't called, instead I eventually get the following error:

SCRIPT12029: WebSocket Error: Network Error 12029, A connection with the server could not be established

This is happening for version 12.10240 of Edge.

A similar problem was asked about here but the error message is different.

Things I tried:

  • IP - localhost, 127.0.0.1, the actual IP
  • Allow localhost loopback flag - both on and off

When trying to communicate with a different machine the problem does not occur.

Is this a defect in Edge or am I doing something wrong?

Share Improve this question edited May 23, 2017 at 10:29 CommunityBot 11 silver badge asked Aug 2, 2015 at 13:53 MottiMotti 115k56 gold badges194 silver badges273 bronze badges 4
  • Report bug to Microsoft maybe? – Jan Commented Aug 2, 2015 at 16:25
  • @Jan I sent feedback but in parallel I want to make sure I'm not missing something obvious (I don't have much experience with WebSockets) – Motti Commented Aug 2, 2015 at 16:53
  • 1 Maybe, but this sure sounds like a bug to me. – Jan Commented Aug 2, 2015 at 17:26
  • This is not a bug. This all has to do with loopback. When you connect to a different IP (one that is not localhost, ::1 or 127.0.0.1) the IP is generally not considered a loopback attempt, hence the need for CheckNetIsolation, which is specific to ModernUI applications (Edge is a ModernUI application). This is only one of many gotcha's with IE11 and Edge when it comes to loopback connections. On a domain network, the connection can still be blocked after calling CheckNetIsolation due to the changing of the definition Local Intranet Zone on a domain. – tresf Commented Aug 16, 2016 at 2:54
Add a comment  | 

1 Answer 1

Reset to default 14

I had a similar problem, but it was when actually navigating to pages in the browser. I could use the phrase localhost and it worked fine, but I didn't work when I used my machine's name. I found this forum where they suggested that you run the following command in a administrator prompt:

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

Worked for me. Thought you might be seeing some form of the same issue.

As the forum suggests, you can now also do this by opening Edge and navigating to "about:flags", then tick "Allow localhost loopback (this might put your device at risk)" under "Developer Settings". Should feel a little safer than pasting random stuff into your command prompt.

Edit: As tresf pointed out below, the loopback checkbox in the about:flags appears to have stopped working (as a fix), so you'll have use the CheckNetIsolation command, to make Edge exempt.

发布评论

评论列表(0)

  1. 暂无评论