Вопрос

Я немного боролся с WebSockets, и был довольно доволен тем, насколько легко добраться, чтобы запустить сервер TORNADO, который делает Basic WebSocket Connections. Я никогда не использовал торнадо до сегодняшнего дня, и хотя мне нравится то, что я видел, есть несколько вопросов, которые я имею в отношении этого использования.

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

Так что же был бы хороший способ достичь этого? Насколько я вижу в Tornado, нет никакого способа общаться между соединениями, отличными от размещения сообщения в хранилище данных где-то и имея все другие опросы соединений для новой информации. Это ударяет меня как ужасно неуклюже, потому что все, что вы действительно делаете в тот момент, перемещает процесс опроса от клиента на сервер.

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

Это было полезно?

Решение

Вот сервер чата с использованием торнадо, WebSockets и Redis: https://gist.github.com/pelletier/532067. (Обновленный: ссылка исправлена, спасибо @samidht)

Другие советы

Хотя ответ уже принят: использование другого сервиса все еще кажется очень неэффективным для меня. Почему бы вам не просто пойти с общей памятью + условные переменные / семафоры? Вы звучите так, будто у вас есть стандартная проблема потребительских производителей

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top