2012-12-18 25 views
5

我不禁感到这必须在某个地方回答,但是如果我能找到它,我就会生气。部分问题可能是客户方面有太​​多的讨论让我看到树木。用于NodeJS的Web套接字服务器端实现

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

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

所以,我试过WebSocket,但这需要(或似乎需要python和,更糟糕的是,视觉Studio)在Windows上运行。我需要一些独立于平台的东西,并不需要特殊的东西。

我也尝试过node-websocket-server,但是我无法完成这项工作。主页上的示例对我而言不合格。它似乎接受连接,但客户端没有看到它,任何一方都不会发送任何内容,并且客户端立即将该连接视为关闭。事实上,我所得到的只是一个“连接”回调,然后它似乎死亡。在调试模式下运行并没有告诉我任何有用的信息,除了某些对象或其他没有flush()方法的内部错误。我怀疑这是一个已经失效的项目?

所以,我没有想法。是否有可能说服socket.io纯粹通过WebSockets的(非)规范工作?有没有办法让node-websocket-server的行为发生,我找不到。有没有办法绕过websocket中的Visual Studio依赖项,还是有其他一些基于NodeJS的工具可以满足我所有的需求?

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

TIA, 托比

回答

4

我有你面对的那一刻,当我试图在不同的平台上使用Socket.IO无客户端的直接端口完全相同的问题(和不我自己移植的动机)。

我结束了我的移动代码中使用WS这是节点的基于标准的WebSocket实现,而不从socket.io加了糖。

它的工作原理非常好,在我的情况在几个不同的平台,但你需要返工大多数连接/重新连接代码等

网站:link

GitHub上:link

NPM: npm install ws

+0

好的,谢谢,我会给你一个去(抱歉,延迟承认,我是出城)。 –

0

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

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

例子:

  • 设置GYP_MSVS_VERSION=2012为Visual Studio 2012
  • 设置GYP_MSVS_VERSION=2013e(在 'E' 代表 'Express版')

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

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

随意在添加您的投票:

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