Безопасно ли хранить соединение через web-сокет eventmachine на уровне класса?

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

@@connections[:user_id] = conn

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

1 ответ

Решение

Это отлично работает, и это то, что я сделал, когда начал писать веб-IRC-клиент, но проблема в том, что вы подключаете подключенных пользователей к единому процессу ruby. Если вы хотите запустить 2-й реактор, этот 2-й процесс не будет использовать одни и те же переменные класса. Вы можете обойти это, используя haproxy для разделения пользователей между различными процессами, но это то, что нужно остерегаться.

Другие вопросы по тегам