2015-12-14 2 views
1

я следующий код на двух машинахКак использовать socket.io-redis с несколькими серверами?

var server  = require('http').createServer(app); 
    io    = require('socket.io')(server); 
    var redisAdapter = require('socket.io-redis'); 
    io.adapter(redisAdaptebr({host: config.redis.host, port: config.redis.port})); 
    server.listen(config.port, function() { 

и хранить socket.id каждого клиента, подключенного к этим двум машинам на центральной БД, идентификатор сокетов сохраняются и событие отправки на тот же сервер работает безупречно, но когда я пытаюсь отправить сообщение в гнездо другого сервера не работает ..

subSocket = io.sockets.connected[userSocketID]; 
    subSocket.emit('hello',{a:'b'}) 
  1. Как я могу знать, что Redis является wokring хорошо.
  2. Как отправить сообщение в сокет, подключенный к другому серверу.

ответ

1

Вы не можете. Socket.IO требует липких сеансов. Розетка должна взаимодействовать исключительно с исходным процессом.

docs

Вы можете иметь Socket.io серверы взаимодействуют друг с другом, чтобы передать события вокруг, но клиент должен продолжать говорить с процессом, с которым она возникла.

+0

Так как я могу отправить событие с сервера, на другой сервер? –

+0

Есть рекомендации относительно того, как это сделать в нижней части документации, к которой я привязан. – tkone

+0

как упомянуто выше, я попробовал тот же документ, адаптер redis. но не использовать :( –

0

У меня есть аналогичная проблема, но я могу ответить на ваш первый вопрос. вы можете контролировать все команды, обрабатываемые Redis с помощью этой команды на терминале:

redis-cli monitor 

http://redis.io/commands/MONITOR

К сожалению, я не могу помочь вам в дальнейшем, как я до сих пор возникают проблемы, даже если оба сервера посылают что-то REDIS ,

Смежные вопросы