Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将node.js服务器端代码移植到HTML5 WebSocket_Javascript_Sockets_Html_Node.js_Websocket - Fatal编程技术网

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

Javascript 将node.js服务器端代码移植到HTML5 WebSocket,javascript,sockets,html,node.js,websocket,Javascript,Sockets,Html,Node.js,Websocket,注意:这不是关于同时使用node.js和HTML5套接字。我对讨论我所描述的设置的优点也不感兴趣 node.js在服务器上运行,由于它支持通过套接字作为客户端进行连接,因此它可以充当HTML5/js客户端和使用TCP/IP的服务器(如数据库服务器)之间的中间层。因此,node.js和WebSocket都包括打开与服务器的套接字连接的方法 我的问题是,是否有人成功地将node.js脚本移植到WebSocket,即将node.js从等式中删除,以便您的web浏览器直接连接到数据库?我想它会是这样的:

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

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

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

  • 删除与HTTP有关的所有内容
  • 移植所有node.js特定函数的用法,以使用WebSockets API

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

    您的问题有点难解析,但我会尝试一下

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

    如果您有兴趣将WebSocket支持添加到特定的给定服务器(即数据库服务器),那么您可能会发现。它支持使用WebSocket(即noVNC)的客户端,因此不需要代理

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


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

    起初,我想问,“你为什么需要代理?”你的文档说wxproxy“将WebSockets流量转换为正常的socket流量”,而WebSockets流量不是正常的socket流量的概念对我来说是新概念。我认为WebSocket的整个想法是它们是普通的套接字。那么服务器总是需要显式支持WebSocket吗?这是不幸的…我想知道为什么会这样做…(我想这就是为什么你在解析我的问题时遇到困难…谢谢你处理它。)是的,除了握手(包括来源信息,使WebSocket更易于HTTP升级)之外,WebSocket帧还有一个前导0(零)和尾随255。我的理解是,具有更高级别的框架使协议更易于使用。例如,VNC/RFB确实很难使用,因为没有帧。事实上,WebSockets协议的下一次迭代将不仅是框架式的,而且很可能有一个包含有效负载类型和长度信息的头(而不是像当前的那样使用框架分隔符)。不过,这个名字无助于消除混淆。