我可以使用WebSockets连接到irc,icq,sip等服务,前提是我在JavaScript中有这些协议的某种实现吗?

xch*_*.ca 6 javascript websocket

我想使用WebSockets连接到irc,icq,sip等服务.假设我在JavaScript中有这些协议的某种实现?那可能吗?我似乎不理解WebSockets与常规套接字相比的局限性.

Aln*_*tak 8

不,你不能,至少不能直接.

WebSockets允许浏览器和WebSocket服务器之间的实时消息传递,但它们有自己的第7层协议来封装这些消息.

它们提供对纯TCP(或UDP)套接字的访问,您可以通过该套接字实现现有协议.


kan*_*aka 8

绝对!

需要注意的是,您需要在浏览器的WebSocket传输协议和现有服务的原始TCP套接字之间建立桥梁.例如,像websockify(免责声明:我创建了websockify).另一个需要注意的是,websockify只支持TCP目标(WebSocket现在只是TCP,所以支持UDP目标无论如何都会有点奇怪).

websockify项目实际上包括两个概念证明HTML/Javascript页面与IRC和telnet进行通信.如果您有兴趣利用websockify为一些常见的TCP协议构建HTML/Javascript客户端,我甚至可以将它们作为示例引入websockify repo(假设它们编码良好并且在开源许可下.

websockify的替代方案是将websocket服务器端支持直接集成到您希望与之通信的服务器中.添加支持并不是那么困难.WebSocket有一个非常简单的框架,虽然握手与HTTP服务器兼容,但它实际上更受限制和简单,并且不需要完整的HTTP解析器.例如,libvncserver 0.9.9现在支持通过WebSocket进行常规VNC连接和VNC连接.这允许noVNC(我也创建)直接连接到基于libvncserver的VNC服务器,而不需要websockify.