是否有一个不需要使用浏览器的无浏览器websocket客户端的Node.js?

Socket.IO等都需要在客户端浏览器的使用….只是想知道,我们如何可以浏览器的websocket客户端node.js?

目前的build议

与我的包装代码一起使用WebSocket-Node(见下文)。 在撰写本文时,我没有其他的公共项目支持新的hybi规范,所以如果你想模拟当前的浏览器版本,你将需要WebSocket-Node。 如果您想模拟旧版本的浏览器(例如iOS 4.2上的移动版Safari),则还需要使用下面列出的其中一个库,但是您必须自己pipe理“WebSocket”对象名称冲突。

node.js的公共WebSocket客户端实现列表如下。

Socket.IO

socket.io客户端testingWebSocket的实现hixie草案75/76,但在撰写本文时,不是hybi 7+。

https://github.com/LearnBoost/socket.io/blob/master/support/node-websocket-client/lib/websocket.js

我问他们是否打算更新到hybi 7+: http ://groups.google.com/group/socket_io/browse_thread/thread/d27320502109d0be

节点的WebSocket客户端

Peter Griess的“node-websocket-client”是hixie草稿75/76,但在撰写本文时,不是hybi 7+。

https://github.com/pgriess/node-websocket-client/blob/master/lib/websocket.js

WebSocket的节点

Brian McKelvey的WebSocket-Node有一个用于hybi 7-17(协议版本7-13)的客户端实现,但是实现不提供浏览器式的WebSocket对象。

https://github.com/Worlize/WebSocket-Node

这里是我用来模拟浏览器样式的WebSocket对象的包装代码:

/** * Wrapper for Worlize WebSocketNode to emulate the browser WebSocket object. */ var WebSocketClient = require('./WorlizeWebSocketNode/lib/websocket').client; exports.WebSocket = function (uri) { var self = this; this.connection = null; this.socket = new WebSocketClient(); this.socket.on('connect', function (connection) { self.connection = connection; connection.on('error', function (error) { self.onerror(); }); connection.on('close', function () { self.onclose(); }); connection.on('message', function (message) { if (message.type === 'utf8') { self.onmessage({data:message.utf8Data}); } }); self.onopen(); }); this.socket.connect(uri); } exports.WebSocket.prototype.send = function (data) { this.connection.sendUTF(data); } 

SockJS

仅供参考,Marek Majkowski的SockJS不包含节点客户端。 SockJS的客户端库只是一个浏览器的包装器。

https://github.com/sockjs/sockjs-client

刚刚经历了这个,我不得不build议: https : //github.com/Worlize/WebSocket-Node由于它是优秀的文档。

https://github.com/einaros/ws紧随其后。

两者都是积极的,并保持最新在这个时候。

Remy Sharp(@rem)写了一个在服务器上工作的Socket.io客户端实现。 我想这就是你要找的: https : //github.com/remy/Socket.io-node-client

一个Node.js服务器不能作为一个客户端绑定到Web浏览器。 任何程序都可以使用其支持库提供的任何套接字库来调用Node.js服务器。

编辑

回应你的评论:不要忘记,Node.js是Javascript! 如果要定期执行代码 – 就像守护进程一样 – 您可以使用setIntervaln毫秒运行一次callback。 你应该可以在你的节点程序中执行它。

现在(2012年10月)推荐使用的方法是使用socket.io-client库,可以在https://github.com/LearnBoost/socket.io-client