【问题标题】:Connect from plain javascript to socket.io backend? - Connection closed before handshake从普通的 javascript 连接到 socket.io 后端? - 握手前连接关闭
【发布时间】:2016-06-07 16:33:43
【问题描述】:

我正在尝试将我的客户端 javascript 连接到使用 socket.io 托管的后端 websocket 服务。

我正在尝试使用本机 WebSocket 对象连接到 socket.io 服务器,例如:

new WebSocket("wss://localhost:8080/socket.io/websocket")

但我不断得到:

在收到握手响应之前连接已关闭

我曾尝试使用客户端 socket.io 库进行连接,只是为了确认服务器已启动且正常,这可以正常工作,但在生产中我只有 WebSocket 对象可用。

有什么想法吗?

【问题讨论】:

  • 将您的网址更改为“ws://localhost:8080/socket.io/websocket”。成功了吗?
  • 不,它不起作用

标签: javascript node.js sockets websocket


【解决方案1】:

wss 用于安全 Web 套接字,我假设您没有在 localhost 中使用 ssl 证书 所以

new WebSocket("ws://localhost:8080/socket.io/websocket")

会起作用的。

编辑: 当您使用 socket.io 客户端时,您将使用

var socket = io.connect('http://localhost:8080');

要使用带有WebSocket 的网址,您需要ws://localhost:8080/socket.io/?transport=websocket

new WebSocket('ws://localhost:8080/socket.io/?transport=websocket')

【讨论】:

  • 我在我的服务器上使用https,我可以通过浏览器连接到https端点,看看我的服务器是否在线,我也可以用socket的客户端连接到wss端点。 io 但我无法初始化 WebSocket 对象,完全按照您所说的使用 wss 给我一个错误,即在收到握手响应之前连接已关闭。
  • 检查编辑的答案是否适合您,假设您没有在 localhost 中使用 wss
猜你喜欢
  • 2016-09-09
  • 2023-03-07
  • 2014-12-27
  • 1970-01-01
  • 2017-03-12
  • 2019-07-10
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多