У меня есть главный процесс, который разветвляет рабочих, которые являются серверами socket.io, и все это, используя модуль кластера и, конечно, socket.io.
Проблема в том, что, если я не скажу, что я хочу только одного работникамой код просто не работает.Я написал его до того, как существовал модуль кластера, и он работал нормально как один процесс, и кажется, что теперь он такой же.
Что происходит, когда он разветвляется на 4 рабочих (число ядер ЦП) с RedisStore в качестве сеансаХранилище выглядит следующим образом:
node_redis: no callback to send error: Error: ERR wrong number of arguments for 'hset' command
Caught exception: Error: Error: ERR wrong number of arguments for 'hset' command
И если я использую хранилище памяти по умолчанию, в журналах socket.io оно повторяется
debug - cleared close timeout for client 3883988821204831830
debug - discarding transport
debug - client authorized
info - handshake authorized 12039436321106971132
debug - xhr-polling received data packet �43�5:::{"name":"estimatepp","args":[70821530]}�20�5:::{"name":"ready"}
debug - setting request GET /socket.io/1/xhr-polling/217474157959916242?t=1328357263590
debug - setting poll timeout
debug - clearing poll timeout
debug - xhr-polling writing 7:::1+0
debug - set close timeout for client 217474157959916242
warn - client not handshaken client should reconnect
info - transport end
И на стороне клиента (браузер) регистрирует еговыдает странную ошибку:
Uncaught TypeError: Property 'open' of object #<c> is not a function
handshake.c.sessionidsocket.io.js:2
d.ready
Ошибка на стороне клиента не возникает с RedisStore, и ни одна из ошибок не возникает только с одним работником.У меня есть веские основания полагать, что ошибка wrong number of arguments for 'hset'
есть в коде RedisStore файла socket.io, потому что я вообще не использую hset в своем коде, и, опять же, этого не происходит с MemoryStore ...
Как вы думаете, что это происходит?Стоит ли сообщать об этом ребятам из socket.io?