我在端口80
中部署了一个Web服务器,并在其javascript中运行Websocket。
var wsURL = ws://localhost:80/ws"
wsConn = new WebSocket(wsURL);
但我一直收到这个错误:
与'ws:// localhost / ws'的WebSocket连接失败:连接建立错误:net :: ERR_CONNECTION_REFUSED
当我使用80
以外的端口在本地运行时没有问题,但在生产中我需要使用端口80
并继续收到此错误。
我是否可以WebSocket
使用端口80
?
答案 0 :(得分:1)
使用window.location.hostname
将清除您在制作过程中遇到的任何网址差异。在url中使用localhost
将导致向用户的本地计算机发出ws请求,而不是生产服务器。因此你的连接拒绝。
注意 此方法仅适用于客户端由同一WebSocket服务器直接提供服务的情况,如果服务器不同,则需要一种方法来获取确切的信息。 WebSocket服务器的URL。 - 很可能是从后端(服务前端)到WebSocket服务器的某种类型的重定向/转发/代理。
答案 1 :(得分:0)
WebSocket由HTTP请求初始化,ws协议默认使用端口80。
ERR_CONNECTION_REFUSED表示您没有收听此端口,您需要检查您的Web服务器配置或日志。
在Linux / OSX上,您必须使用root用户启动程序以侦听端口< 1024,您可以使用setuid()在此之后删除root权限。