无法使用WebSocket协议建立正确的服务器-客户端连接

fnatzsnv  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(199)

目标:
QTcpServerC#客户端之间建立基于WebSocket协议的工作服务器-客户端连接。目前,通过localhost。
问题:
服务器可以与telnet客户端配合使用,但不能与任何其他客户端配合使用(例如C#客户端、WebSocket测试客户端chrome插件)。C#客户端可以与C#服务器或其他websocket服务器配合使用(例如wss://socketsbay.com/wss/v2/2/demo/)。在这种情况下工作意味着:建立连接,意味着服务器和客户端通过触发一些相应的OnOpen事件来识别连接。
使用WireShark监视网络活动,可以观察到以下内容:

QTcpServertelnet客户端成功连接时,红线以下的所有内容都会发生。看起来像是预期的http握手。之后,可以交换数据。另一方面,当我尝试将QTcpServertelnet以外的客户端连接时,红线以上的线条会出现。握手后,客户端似乎再次发送握手报头?(通过wireshark验证方向:客户端-〉服务器)。无论如何,在此之后,客户端的WebSocket状态停留在Connecting上。服务器认为连接已经建立,但数据交换是不可能的。
这里的问题可能是什么?我不知道这是服务器端还是客户端的问题,因为如上所述,有些情况下双方都工作。

omqzjyyz

omqzjyyz1#

结果发现问题是服务器需要一个常规的TCP连接,而客户端都在使用WebSocket协议。因此,尽管客户端和服务器似乎已经连接,但无法创建有效的连接。
下面的文章将更详细地介绍Websockets和常规TcpSockets之间的区别:Diff websockets and sockets

相关问题