Подтвердить что ты не робот

Можно ли запустить клиент socket.io(серверный) на сервере node.js?

Я бы хотел включить сокет-p2p-связь между двумя или более разными серверами приложений node.js. Я использую socket.io для обработки всей такой связи между данным сервером и используемым им веб-приложением, но то, что я ищу, - это способ связи между серверами.

Я изначально предполагал, что это будет так же просто, как что-то вроде этого:

var io = require("socket.io");
var socket = io.connect("my remote endpoint");

Однако, как оказалось, серверная реализация socket.io не предлагает метод "connect", а только метод прослушивания.

Почему это? Почему я не могу обработать сервер приложений node в качестве клиента на сервере socket.io, работающем в другом месте? Есть ли способ достичь этой функциональности?

4b9b3361

Ответ 1

ОК, поэтому благодаря @pimvdb в комментариях выше у меня есть работоспособное решение.

В принципе, библиотека socket.io, которую устанавливает npm, имеет зависимость от другого модуля, называемого socket.io-client. В стандартной установке socket.io это будет установлено в node_modules/socket.io/node_modules/socket.io-client

Однако также можно сказать "npm install socket.io-client" и установить его как свою собственную первоклассную библиотеку граждан.

Тогда ваше использование выглядит следующим образом:

var client = require("socket.io-client");
client.connect("http://myendpoint.com:3000/whatever");
client.emit("test", "foo");

И все работает.

Итак, спасибо человеку!

Ответ 2

Просто для пояснения, это пример с слушателями и возможность испускать события (и без установки снова установленного модуля)

var io = require('socket.io/node_modules/socket.io-client');

client = io.connect('http://'+CONFIG.host+':'+CONFIG.port);

client.on('connect',function() {
    client.emit("test","foo");
}); 

Ответ 3

Перед тем, как перейти на полную совместимость с socket.io для связи между серверами... socket.io спроектирован как браузер для коммуникационной инфраструктуры сервера. Я далеко не уверен, что это лучшее решение для сервера P2P. Кроме того, если вы выполняете сервер-сервер - почему бы просто не использовать веб-узлы? Существуют различные модули websocket для node - например. https://github.com/einaros/ws