Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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/2/image-processing/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
Node.js NodeJS的Web套接字服务器端实现_Node.js_Websocket_Socket.io - Fatal编程技术网

Node.js NodeJS的Web套接字服务器端实现

Node.js NodeJS的Web套接字服务器端实现,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,这个问题的一部分可能是因为在客户端有太多的讨论,我看不到实情 不管怎样,这是我想做的。我需要一个独立于平台的WebSocket服务器端实现。我想让它在NodeJS中运行 现在,我在本主题中发现的99%都是关于socket.io的。但据我所知,这不是WebSocket,它本身就是一个特殊的“额外”协议。我需要“按(尚未)标准”工作的东西。这有一个很好的理由,这是不可谈判的,相信我 所以,我尝试了WebSocket,但这需要(或者似乎需要python和更糟糕的Visual Studio)在Windo

这个问题的一部分可能是因为在客户端有太多的讨论,我看不到实情

不管怎样,这是我想做的。我需要一个独立于平台的WebSocket服务器端实现。我想让它在NodeJS中运行

现在,我在本主题中发现的99%都是关于socket.io的。但据我所知,这不是WebSocket,它本身就是一个特殊的“额外”协议。我需要“按(尚未)标准”工作的东西。这有一个很好的理由,这是不可谈判的,相信我

所以,我尝试了WebSocket,但这需要(或者似乎需要python和更糟糕的Visual Studio)在Windows上运行。我需要一些独立于平台的东西,不需要像这样的特殊东西

我还尝试了NodeWebSocket服务器,但根本无法使其工作。主页上的示例对我来说失败了。它似乎接受了一个连接,但客户端没有看到它,任何一方都无法发送任何内容,客户端立即看到连接已关闭。事实上,我得到的只是一个“连接”回调,然后它似乎就消失了。在调试模式下运行并没有告诉我任何有用的信息,除了关于某个对象或其他没有flush()方法的对象的一些内部错误。我有点怀疑这是一个失败的项目

所以,我没有主意了。是否有可能说服socket.io完全按照WebSocket的(非)规范工作?有没有一种方法可以让节点websocket服务器表现出我找不到的行为。有没有办法绕过websocket中的VisualStudio依赖关系,或者有没有其他基于NodeJS的工具可以满足我的所有需求


哦,还有一件事,我希望该工具能够与“connect”和平共处,因为我正在使用它来提供常规文档服务。

我遇到了与您当时所面临的问题完全相同的问题,当时我试图在不同的平台上使用Socket.IO,但没有客户端的直接端口(也没有自己移植它的动机)

最后,我将代码改为使用ws,这是一种基于标准的websocket节点实现,无需从socket.io添加糖

在我的例子中,它在几个不同的平台上运行得非常好,但是您需要重新编写大部分连接/重新连接代码等

网站:

GitHub:


NPM:
NPM install ws

Socket.io在幕后使用ws,因此您可能会在Windows上遇到相同的安装问题。您可能会发现,它抱怨您需要安装Visual Studio 2010才能使
ws
组件正常工作

但是,您可以配置VisualStudio使用的版本:“代码>节点GYP”,它通过环境变量运行C++编译器。 示例:

  • 为Visual Studio 2012设置
    GYP\u MSVS\u VERSION=2012
  • set
    GYP\u MSVS\u VERSION=2013e
    (“e”代表“express edition”)
有关完整列表,请参阅 -

这对NodeJS的Windows用户来说是一个痛苦的过程,因为它假设您安装了一个visualstudio的副本,而许多非开发人员最终用户永远不会安装该副本。因此,我正在游说Joyent,以鼓励他们将web套接字作为核心节点的一部分,并将GNU gcc编译器作为NodeJS安装的一部分提供,这样我们就可以永久解决这个问题,而不必强迫Windows节点用户调整其环境或下载任何其他内容

请随时在以下网址添加您的投票:


注意:Joyent团队指出,当编译
ws
失败时,socket.io将退回到使用较慢的实现。换句话说,您的代码仍将运行—只是速度没有那么快。对于安装依赖socket.io或ws的任何应用程序的最终用户来说,这并不清楚,因为在安装过程中,它会显示红色的错误文本,这会导致用户认为安装失败,而事实上安装过程会很慢。

好的,谢谢,我会尝试一下(很抱歉,延迟确认,我不在城里)。