![](/img/trans.png)
[英]Writing WebSocket client with TypeScript running both on browser and Node.JS
[英]Is there a browserless websocket client for Node.js that does not need to use a browser?
Socket.IO等都需要在客户端使用浏览器....只是想知道,我们怎样才能为node.js提供无浏览器的websocket客户端?
目前的建议
将WebSocket-Node与我的包装器代码一起使用(见下文)。 在撰写本文时,我所知道的其他任何公共项目都不支持新的hybi规范,因此如果您想模拟当前的浏览器版本,则需要WebSocket-Node。 如果您想模拟旧版浏览器,例如iOS 4.2上的移动Safari,您还需要下面列出的其他库之一,但您必须自己管理“WebSocket”对象名称冲突。
接下来是node.js的公共WebSocket客户端实现列表。
Socket.IO
socket.io客户端测试WebSocket实现执行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
仅供参考,马立克Majkowski的SockJS 不包括节点客户端。 SockJS的客户端库只是一个浏览器dom包装器。
刚刚完成这个,我不得不建议: https : //github.com/Worlize/WebSocket-Node由于它的优秀文档。
https://github.com/einaros/ws紧随其后。
两者都是活跃的,并且此时保持最新。
Remy Sharp(@rem)编写了一个可在服务器上运行的Socket.io-client实现。 我想这就是你要找的东西: https : //github.com/remy/Socket.io-node-client
现在(2012年10月)推荐的方法是使用socket.io-client库,该库可从https://github.com/LearnBoost/socket.io-client获得。
Node.js服务器绝不作为客户端绑定到Web浏览器。 任何程序都可以使用其支持库提供的任何套接字库来调用Node.js服务器。
编辑
回应你的评论:不要忘记Node.js是Javascript! 如果您想定期执行代码 - 与守护进程可能的方式非常相似 - 您可以使用setInterval每n毫秒运行一次回调。 您应该能够在节点程序中执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.