Можно ли настроить клиент socket.io, работающий (на стороне сервера) на сервере node.js? - PullRequest
24 голосов
/ 13 марта 2012

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

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

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

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

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

Ответы [ 3 ]

56 голосов
/ 13 марта 2012

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

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

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

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

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

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

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

6 голосов
/ 10 апреля 2013

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

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");
}); 
2 голосов
/ 14 марта 2012

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

...