我可以使用 WebSockets 连接到 irc、icq、sip 等服务吗,前提是我在 JavaScript 中对这些协

Can I connect to irc, icq, sip, etc services using WebSockets providing I have some sort implementation of those protocols in JavaScript?

本文关键字:前提 JavaScript 连接 WebSockets 可以使 irc 等服务 sip icq 我可以      更新时间:2023-09-26

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

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

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

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

当然!

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

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

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

Inspircd 有一个非官方的模块,你可以安装名为 m_websockets ,以允许连接。安装并设置了模块的服务器将允许您通过webbsockets连接到服务器。

https://github.com/barosl/inspircd-m_websocket

扩展@kanaka的网络sockify,这个项目似乎做到了:

一个HTML5 irc-client,由websocket和websockify制作。

[具有]支持自动加入,privmsg频道,主题,加入,用户列表,部分,昵称。

https://github.com/confact/dunirc

不,不是使用 websockets,但您可以使用 http。

萨米·卡姆卡尔(Samy Kamkar)对此进行了黑帽演讲。