Я немного возился с WebSockets и был очень доволен тем, как легко было запустить сервер Tornado, который выполняет базовые подключения через веб-сокеты. Я никогда не использовал Tornado до сегодняшнего дня, и хотя мне нравится то, что я видел, у меня есть несколько вопросов относительно его использования.
Прежде всего, я использую WebSockets, чтобы иметь связь с низкими издержками между двумя или более клиентскими машинами. (Для целей разговора давайте просто скажем, что это чат-клиент). Очевидно, я могу подключиться к серверу с нескольких компьютеров, и все они могут отправлять сообщения на сервер, и сервер может отвечать, и это здорово! Но это не намного лучше, чем ваши стандартные запросы AJAX. Если у меня есть постоянное соединение, я хочу также иметь возможность передавать данные клиентам. Самый простой возможный сценарий: пользователь 1 отправляет сообщение на сервер, и, получив его, сервер немедленно отправляет его пользователю 2.
Итак, что было бы хорошим способом добиться этого? Насколько я вижу, в Tornado нет другого способа связи между соединениями, кроме размещения сообщения в каком-либо хранилище данных и опроса всех других соединений для получения новой информации. Это кажется мне ужасно неуклюжим, потому что все, что вы на самом деле делаете в этот момент, — это перенос процесса опроса с клиента на сервер.
Конечно, я могу лаять здесь совсем не по тому дереву. Вполне вероятно, что Tornado просто не подходит для этой работы, и если это так, я был бы рад услышать предложения по альтернативам!