【问题标题】:Javascript Websocket to listen on port 80Javascript Websocket 监听 80 端口
【发布时间】:2016-05-05 16:47:43
【问题描述】:

我在端口80 中部署了一个Web 服务器,Websocket 在其javascript 中运行。

var wsURL = ws://localhost:80/ws"
wsConn = new WebSocket(wsURL);

但我不断收到此错误:

到 'ws://localhost/ws' 的 WebSocket 连接失败:连接建立错误:net::ERR_CONNECTION_REFUSED

当我使用80 以外的端口在本地运行此程序时没有问题,但在生产中我需要使用端口80 并不断收到此错误。

无论如何我可以让WebSocket 与端口80 一起工作吗?

【问题讨论】:

  • 尝试 window.location.hostname 而不是 localhost
  • @Michael-R 成功了!谢谢!
  • 酷我添加它作为答案

标签: javascript jquery html websocket


【解决方案1】:

WebSocket 由 HTTP 请求初始化,ws 协议默认使用 80 端口。

ERR_CONNECTION_REFUSED 表示您没有监听此端口,您需要检查您的网络服务器配置或日志。

在 Linux/OSX 上,您必须使用 root 用户启动程序来监听端口

【讨论】:

    【解决方案2】:

    使用 window.location.hostname 将清除您在生产过程中遇到的所有 URL 差异。在 url 中使用 localhost 将导致 ws 请求到用户的本地计算机,而不是您的生产服务器。因此,您的连接拒绝。

    注意 此方法仅适用于客户端由同一个 WebSocket 服务器直接提供服务时,如果服务器不同,您需要一种方法来获得准确的WebSocket 服务器的 url。 -- 很可能是从后端(服务于前端)到 WebSocket 服务器的某种类型的重定向/转发/代理。

    【讨论】: