我在连接 websocket 时遇到问题

Posted

技术标签:

【中文标题】我在连接 websocket 时遇到问题【英文标题】:I'm having trouble connecting websocket 【发布时间】:2021-10-01 05:50:05 【问题描述】:

我使用SocketTest v 3.0.0 程序创建了一个服务器。

我尝试使用 javascript 连接到我自己的服务器,

当控制台中出现 undefined 时,我从 JavaScript 客户端收到一条消息;

消息是;

GET / HTTP/1.1
Host: 127.0.0.1:9090
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/96.0.4655.6 Safari/537.36
Upgrade: websocket
Origin: chrome://new-tab-page
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,tr-TR;q=0.8,tr;q=0.7
Sec-WebSocket-Key: yeTxrheLM3XMmBowpT5DhQ==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

当我运行ws.send("hello server") 时出现此错误;

Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.

等待一段时间后,客户端会自动关闭。

【问题讨论】:

这能回答你的问题吗? Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state no @Yannick 等待一段时间后,客户端会自动关闭。 这个Socket Test 应用程序(如果你使用的是那个)创建了一个通用的 TCP 服务器,而不是一个 webSocket 服务器。 webSocket 客户端必须连接到 webSocket 服务器。它需要使用 webSocket 连接协议的东西才能成功连接。 【参考方案1】:

这个Socket Test 应用程序(如果您正在使用该应用程序)创建一个通用 TCP 服务器,而不是一个 webSocket 服务器。 webSocket 客户端必须连接到 webSocket 服务器。它需要使用 webSocket 连接协议的东西才能成功连接,当你将它指向一个普通的 TCP 服务器时,它会发送它的初始连接请求,但不会收到它期望的响应(webSocket 连接的第一阶段协议),因此永远不会成功连接。

仅供参考,您可以看到基本的 webSocket 服务器是如何工作的 here on MDN,这将向您展示 webSocket 客户端所期望的 webSocket 连接协议示例(您的通用 TCP 服务器不提供)。

【讨论】:

以上是关于我在连接 websocket 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

wifi关闭并再次打开时Websocket重新连接问题

动作线无法连接(升级到 WebSocket 失败)

尝试从客户端连接时出现 WebSocket 问题

记websocket遇到的问题以及解决方法

Websockets 控制用户访问

javax websocket客户端ssl连接