WebSocket连接失败:建立连接时出错:net :: ERR_CONNECTION_REFUSED。

51

我对WebRTC和WebSockets还不太熟悉,正在按照这篇教程创建一个WebRTC演示项目,但是我无法创建WebSocket连接。我已经按照该项目中的步骤进行了操作。他的项目运行在端口8080上,并且他提到了ws://localhost:9090。我的项目运行在端口8081上,但是我复制了他的URL ws://localhost:9090,因为我不知道9090的意义,我收到了以下错误,我的服务器是node.js。我也将本地主机更改为8081,但是然后我收到握手错误。

WebSocket连接“ws://localhost:9090/”失败:建立连接时出错:net::ERR_CONNECTION_REFUSED。


2
把端口想象成一扇门。你(客户端)需要在房子里(服务器)打开一扇门才能进入。所以如果你的服务器监听8081端口,你(客户端)必须通过8081端口连接。粘贴你的整个代码,这样你就可以得到更多帮助。 - sidewinder
我正在遵循这些指示创建一个简单的Web应用程序:https://www.tutorialspoint.com/webrtc/webrtc_rtcpeerconnection_apis.htm。如果我将本地主机更改为8081,则会出现以下错误:WebSocket连接到“ws://localhost:8081/”失败:在接收握手响应之前关闭连接。 - Hafsa
你能给我更好的教程链接吗?@sidewinder,我发现这个教程对于我这个初学者来说非常简单。 - Hafsa
如果您能给我一些更好的WebRTC教程链接来开发应用程序,我会很高兴。@sidewinder - Hafsa
1
如果您将浏览器设置成离线模式(在服务工作者设置中),然后失去了与VSCode实时服务器的websocket连接,或者类似的情况,也可能会发生这种情况。 - aderchox
9个回答

42

Chrome不允许与本地主机建立不安全的WebSocket(ws)连接(只接受wss),因此您应该为本地Web/Websocket服务器设置TLS证书。
然而,Firefox应该可以正常工作。


4
我尝试使用url变量wsUri =“ws://localhost:55195 /”运行websocket,但它显示WebSocket连接到'ws://localhost:55195 /'失败:已经寻找解决此问题的方法4天了,仍然不知道代码有什么问题?任何修复此问题的建议将不胜感激。如果有人需要查看代码,请告诉我!提前致谢。 - Shantilal Suthar
1
在你评论的答案中,已经有正确的内容了。为了使其在本地主机上运行,请向你的ws服务器添加证书并通过wss://连接。 - Ali Mert Çakar

14
您需要使用 ws://yourIp:9090/,其中 yourIP 类似于 192.168.?.?

1
解决了我的问题,但为什么不能使用localhost而127.0.01可以? - Louis Huang

4
我猜这是一个通用的WebSocket问题。使用内置的location.host变量将URL更改为动态名称,并在已设置TLS的情况下更改协议为安全WebSocket wss
const ws = new WebSocket("wss://" + location.host + "/")

4

同时,您可以轻松更改 IP地址到主机名的映射, 在Windows上,转到C:\ Windows \ System32 \ drivers \ etc \ hosts 并取消注释此行。

127.0.0.1       localhost

保存并重启。

4
通常情况下,WebRTC需要一个安全的连接(即https)。你遇到的错误是由于TLS / SSL证书被占用,可能它们在你的项目中没有正确配置。请提供有效的TLS / SSL证书,并在项目中正确配置它,然后它将在没有上述错误的情况下工作。

2
这是一个边缘仅链接答案。您应该扩展您的答案,包括尽可能多的信息,并仅将链接用于参考。 - Nick stands with Ukraine

3

端口号9090是由Reactotron使用的。也许你正在使用它来开发你的项目,但如果Reactotron被关闭,你的应用将无法连接上。只需要打开Reactotron,这个错误就会消失。


3

尝试将端口更改为8080。

const ws = new WebSocket('ws://localhost:8080/chat')

这里的“chat”的意义是什么?那不会是一个无效的端口吗? - Esqarrouth
1
这是WebSockets服务器URL中的路径,例如/chat用于聊天消息,/matches用于Tinder匹配等。可能是出于某些扩展方面的考虑。 - Dorian

1

可能您忘记启动WebSocket服务器了,请再次检查,使用我的项目配置运行:

php artisan websocket:init


0

WebSocket连接到'ws://localhost:8080/'失败,请确保服务器文件正在运行。我遇到了上述问题。


2
这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - user-id-14900042

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接