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