это очень сильно зависит от приложения. Наиболее вероятная реализация - это какая-то система обмена сообщениями.
Скорее всего, ваш серверный код будет состоять из нескольких частей:
- несколько серверов приложений, которые обрабатывают входящие запросы,
- (отдельный) комет-сервер, который обрабатывает все открытые соединения с клиентами,
- база данных и
- какая-то инфраструктура обмена сообщениями
последний, инфраструктура обмена сообщениями - действительно ключ. Это позволяет серверам приложений общаться с комет-сервером. Поэтому, когда на сервер приложений поступает запрос, он помещает сообщение в очередь сообщений, сообщая серверу комет об уведомлении правильных клиентов
Способ реализации обмена сообщениями, опять же, очень сильно зависит от приложения. Очень простая реализация просто использует таблицу базы данных с именем messages
и опрашивает ее.
Но в зависимости от стека, который вы планируете использовать, должны быть доступны более сложные инструменты.
В Rails я использую Джаггернаут , который просто слушает какой-то сетевой порт. Всякий раз, когда есть данные для отправки, сервер приложений Rails открывает соединение с этим push-сервером juggernaut и сообщает ему, что отправлять клиентам.