是否有一个不需要使用浏览器的无浏览器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的客户端库只是一个浏览器的包装器。
刚刚经历了这个,我不得不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! 如果要定期执行代码 – 就像守护进程一样 – 您可以使用setInterval每n毫秒运行一次callback。 你应该可以在你的节点程序中执行它。
现在(2012年10月)推荐使用的方法是使用socket.io-client库,可以在https://github.com/LearnBoost/socket.io-client