Текущая рекомендация
Используйте WebSocket-Node с моим кодом оболочки (см. Ниже).На момент написания этой статьи ни один другой общедоступный проект, о котором я знаю, не поддерживает новую спецификацию Hybi, поэтому, если вы хотите эмулировать текущие выпуски браузера, вам потребуется WebSocket-Node.Если вы хотите эмулировать старые браузеры, такие как мобильный Safari на iOS 4.2, вам также понадобится одна из других библиотек, перечисленных ниже, но вам придется самостоятельно управлять конфликтами имен объектов «WebSocket».
Ниже приведен список общедоступных реализаций клиента WebSocket для node.js.
Socket.IO
Реализация WebSocket-теста socket.io client-test делаетчерновик проекта 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
Node-Websocket-Client
"node-websocket-client" Питера Грисса делает хайси черновик 75/76, но на момент написания этой статьи не hybi 7+.
https://github.com/pgriess/node-websocket-client/blob/master/lib/websocket.js
WebSocket-Node
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
Просто для справки, SockJS Марека Майковского не включает клиент узла.Клиентская библиотека SockJS - это просто оболочка для браузера.
https://github.com/sockjs/sockjs-client