WebSocket кросс-соединение (Торнадо?) - PullRequest
2 голосов
/ 02 ноября 2010

Я немного покопался в WebSockets и был очень доволен тем, как легко было запустить сервер Tornado, который выполняет базовые соединения через веб-сокеты. Я никогда не использовал Торнадо до сегодняшнего дня, и хотя мне нравится то, что я видел, у меня есть несколько вопросов относительно его использования.

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

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

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

Ответы [ 2 ]

3 голосов
/ 02 ноября 2010

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

0 голосов
/ 12 мая 2013

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

...