用于NodeJS的Web Sockets服务器端实现

我不禁感到这个问题必须在某个地方得到解答,但是如果我能find答案的话,我会感到厌烦。 部分问题可能是客户端的讨论太多,我不能看到树木。

无论如何,道歉一边,这是我想要做的。 我需要一个独立于平台的WebSockets的服务器端实现。 我希望它在NodeJS中运行。

现在,我在这个主题上find的99%关于socket.io的内容。 但据我所知,这不是WebSockets,它本身是一个特殊的“额外”协议。 我需要一些“(尚未)标准”的作品。 有一个很好的理由,这是不可议付的,相信我,让我们只是保存带宽:)

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

我也尝试过node-websocket-server,但是我根本无法做到这一点。 主页上的例子对我来说是失败的。 它似乎接受连接,但客户端没有看到它,双方都不会发送任何东西,客户端立即将连接视为closures。 事实上,我所得到的只是一个“连接”的callback,然后它似乎死亡。 在debugging模式下运行没有告诉我任何有用的东西,除了一些对象或其他没有flush()方法的内部错误。 我怀疑这是一个已经失效的项目?

所以,我没有想法。 是否有可能说服socket.io纯粹由WebSockets的(非)规范工作? 有没有办法让node-websocket-server的行为,我没有find。 有没有办法解决websocket中的Visual Studio依赖问题,还是有其他一些基于NodeJS的工具可以满足我所有的需求?

哦,另外一件事,我希望这个工具能够和“连接”和平共处,因为我正在使用这个工具来处理我的常规文档。

TIA,Toby

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

我结束了移动我的代码使用ws这是一个基于标准的websocket实现节点没有从socket.io添加糖。

它在我的情况下在多个不同的平台上工作得非常好,但是你需要重新修改大部分的连接/重新连接代码等。

网站: 链接

GitHub: 链接

NPM: npm install ws

Socket.io使用WS的封面,所以你可能会遇到同样的安装问题在Windows上。 您可能会发现它抱怨说,您需要安装Visual Studio 2010才能使ws组件正常工作。

但是,您可以configuration通过环境variables运行C ++编译器的node-gyp使用的Visual Studio版本。

例子:

  • 为Visual Studio 2012设置GYP_MSVS_VERSION=2012 2012
  • 设置GYP_MSVS_VERSION=2013e ('e'代表'express edition')

有关完整列表,请参阅 – https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294

这对于NodeJS的Windows用户来说是一件很痛苦的事,因为它假定你有一个Visual Studio安装的副本,许多非开发的最终用户永远不会拥有这个副本。 所以我正在向Joyent游说,鼓励他们将CORBA节点的web套接字包含进来,并将GNU gcc编译器作为NodeJS安装的一部分,这样我们就可以永久地解决这个问题,而不必强制Windows节点用户调整它们环境或下载其他任何东西。

随时添加您的投票在:

注意:Joyent团队已经指出,当编译ws失败时,socket.io将回退到使用较慢的实现。 换句话说,你的代码仍然会运行 – 只是速度不够快。 对于最终用户执行安装依赖于socket.io或ws的任何应用程序的安装,这是不明确的,因为它在安装过程中显示红色的错误文本,导致用户认为安装失败,实际上它将工作得很慢。