клиент не рукопожатие клиент должен переподключиться, socket.io в кластере - PullRequest
1 голос
/ 08 марта 2012

Мое приложение node.js с экспресс, redis, mongo и socket.io отлично работает. Сегодня, когда я представил кластер, я обнаружил, что он работает, но приложение получает много сообщений,

'client not handshaken' 'client should reconnect'

Во многих случаях время отклика от socket.io очень плохое - до нескольких секунд.

Затем я использовал http-proxy для завершения запросов от браузеров. Хром работает с перерывами, не выкидывая такие сообщения. Иногда, если я снова открываю тот же URL, он начинает выбрасывать эти сообщения, и ответ задерживается. Firefox также ведет себя так же. случайно, он начинает выбрасывать эти сообщения непрерывно .. Выглядит как проблема с веб-сокетом в кластерной среде.

Моя версия node.js - 0.6.10, socket.io 0.9.0, экспресс-версия 2.5.9, http-proxy 0.8.0

.

1 Ответ

3 голосов
/ 08 марта 2012

Скорее всего, это потому, что Socket.IO хранит ваши соединения в памяти, поэтому у каждого сервера будет свой набор клиентов. Чтобы использовать Socket.IO для нескольких экземпляров сервера, изучите их RedisStore. То же самое относится к сеансам Express, где у вас есть connect-redis в качестве опции.

...