Ответ 1
Текущая рекомендация
Используйте WebSocket- Node с моим кодом обертки (см. ниже). На момент написания этой статьи ни один другой публичный проект, который я знаю, не поддерживает новую спецификацию hybi, поэтому, если вы хотите эмулировать текущие версии браузера, вам понадобится WebSocket- Node. Если вы хотите эмулировать старые браузеры, такие как мобильные Safari на iOS 4.2, вам также понадобится одна из других библиотек, перечисленных ниже, но вам придется самостоятельно управлять конфликтами имен объектов "WebSocket".
Ниже приведен список общедоступных реализаций клиента WebSocket для node.js.
Socket.IO
Реализация WebSocket для клиент-теста socket.io делает hixie draft 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-клиент
Peter Griess "node -websocket-client" делает hixie draft 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
Только для справки, Marek Majkowski SockJS не включает клиента node. Клиентская библиотека SockJS - это просто оболочка браузера.