代码之家  ›  专栏  ›  技术社区  ›  Kev

将node.js服务器端代码移植到HTML5 WebSocket

  •  4
  • Kev  · 技术社区  · 14 年前

    注意:这不是同时使用node.js和HTML5套接字。我也不想讨论我所描述的设置的优点。

    node.js在服务器上运行,并且由于它支持通过套接字连接 作为客户 ,它可以充当HTML5/JS客户机和使用TCP/IP的服务器(如数据库服务器)之间的中间层。因此,node.JS和WebSockets都包括打开到服务器的套接字连接的方法。

    我的问题是,是否有人成功地将node.js脚本移植到WebSockets,即从等式中删除node.js,以便您的web浏览器直接连接到数据库?我想应该是:

    1. 删掉所有与HTTP相关的内容
    2. 端口所有node.js特定函数的用法以使用WebSockets API

    如果这样做了,是不是有很多麻烦,或者node.js和websocketsapi相对类似?

    1 回复  |  直到 14 年前
        1
  •  4
  •   kanaka    14 年前

    你的问题有点难理解,但我要试试看。

    如果您对从WebSockets客户端(浏览器)连接到任意TCP套接字服务器感兴趣,那么您可能对 wsproxy 它是TCP套接字代理的通用WebSocket。wsproxy包含在 noVNC (HTML5VNC客户端)并且在C、python和Node(Node.js)中有三个参考实现。

    如果您有兴趣将WebSockets支持添加到特定的给定服务器(即数据库服务器),那么您可能会发现 this fork of libvncserver . 它支持讲WebSockets(即noVNC)的客户机,因此不需要代理。

    基本的wsproxy代理功能很容易实现。最棘手的部分是,当前正在使用的WebSockets草稿(v76)没有指定二进制传输负载(仅限UTF-8),因此wsproxy base64对进出WebSockets客户端的所有通信量进行编码/解码。libvncserver中WebSockets连接的实现有些棘手,因为libvncserver有一些关于缓冲/帧的硬编码思想,需要解决。

    免责声明:我负责noVNC、wsproxy和libvncserver的WebSockets补丁。