是否有可能有一个TCP套接字服务器运行,接受来自WebSocket客户端的传入连接?我有一个TCP套接字服务器,我希望能够在浏览器中进行测试。这可能吗?
绝对!这就是websockify的目的。
当然,你的WebSocket客户端应用程序需要能够实现TCP服务器的协议。例如,noVNC是一个浏览器VNC客户端,它实现了RFB协议,并通过使用websockify可以连接到一个普通的基于TCP的VNC服务器。免责声明:我创建了websockify和noVNC
TCP和WebSocket不是相同的协议或帧,所以盲目地将它们连接起来是行不通的。嗯…从技术上讲,websocket是HTTP的升级版,它在SSL(可选)上分层,而SSL又在tcp上分层。
TCP可以被认为是一个字节流,而WebSocket是一个帧集。
WebSocket帧可以是以下任意一个:
- TEXT -由1个或多个帧组成单个UTF8消息
- BINARY -由1个或多个帧组成字节数组消息
- CONTINUATION -用于TEXT和BINARY将2个或更多帧拼接在一起。
- PING -明显
- PONG -明显
- CLOSE -请求关闭/断开协议。
简而言之,您需要实现websocket协议帧,以便将TCP连接到websocket。为了达到这一点,您需要实现基本的HTTP UPGRADE。