Есть ли браузер без браузера для Node.js, который не должен использовать браузер?

Socket.IO и т.д. все требуют использования браузера на стороне клиента.... просто интересно, как мы можем иметь браузерный клиент websocket для node.js?

Ответы

Ответ 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 - это просто оболочка браузера.

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

Ответ 2

Пройдя это, я должен порекомендовать: https://github.com/Worlize/WebSocket-Node Благодаря этому отличная документация.

https://github.com/einaros/ws подходит к концу.

Оба являются активными и в настоящее время находятся в актуальном состоянии.

Ответ 3

Remy Sharp (@rem) написал реализацию Socket.io-client, которая работает на сервере. Я думаю, что это то, что вы ищете: https://github.com/remy/Socket.io-node-client

Ответ 4

A Node.js сервер никоим образом не привязан к веб-браузеру как к клиенту. Любая программа может использовать любую библиотеку сокетов, предоставляемую ее поддерживающими библиотеками, для вызова на сервер Node.js.

ИЗМЕНИТЬ

Отвечая на ваш комментарий: не забывайте, что Node.js - это Javascript! Если вы хотите периодически выполнять код - во многом так же, как может быть процесс демона, вы можете использовать setInterval для запуска обратного вызова каждые n миллисекунд. Вы должны быть в состоянии сделать это прямо в своей программе node.

Ответ 5

В настоящий момент (в октябре 2012 г.) рекомендуется использовать библиотеку socket.io-client, доступную по адресу https://github.com/LearnBoost/socket.io-client