Я работаю в чате в режиме реального времени. Мне нужно изменить статус владельца комнаты и подключенных пользователей вместе с пользовательским интерфейсом. Поскольку NodeJS/SocketJS/etc не гарантирует доставку сообщений, я переключился на чистый Ajax для этого.Вопрос в режиме реального времени (django/js)
Система работает так: - Пользователь нажимает на кнопку, чтобы изменить свой статус - запрос Ajax, отправляемые на сервер, а запрос на изменение состояния сохраняется в очереди в БД - Пользователи отправить Ajax сердцебиение каждую секунду. На сервере эта функция heartbeat также обрабатывает очередь (когда отправляется владельцем комнаты). Кроме того, каждый раз он отправляет текущие статусы пользователей в комнате.
Проблема заключается в том, что с обеих сторон могут возникать временные проблемы с Интернетом, что вызывает всевозможные проблемы. Это происходит из-за того, что запросы Ajax от сердечного ритма обрабатываются в произвольном порядке на сервере или ответы поступают в неправильном порядке на стороне клиента. В результате пользователи имеют неверные данные о текущих статусах, а изменения пользовательского интерфейса также неверны.
Каков наилучший подход при создании такой системы? Что я делаю неправильно или как я могу исправить проблемы выше?
Спасибо!
Waitaminute Вы говорите, что django с socketio 'не гарантирует доставку сообщений,'? –
SocketJS * Ну, сообщение отправляется один раз - тот, кто смог его поймать - поймал его. https://groups.google.com/forum/#!topic/sockjs/drG5B4PhmeE http://stackoverflow.com/questions/20685208/websocket-transport-reliability-socket-io-data-loss-during-reconnection – Alexander
Весь стек (или я должен сказать, что он был) - это Django + Redis + SockJS + NodeJS. Но это даже не проблема, которую я пытаюсь решить. – Alexander