Найти - Пользователи
Полная версия: Twisted autobahn вебсокеты. Как разграничить обработчики по url?
Начало » Python для экспертов » Twisted autobahn вебсокеты. Как разграничить обработчики по url?
1
plusplus
Разбираюсь с твистедом. В торнадо было так: для каждого урл вебсокета был свой хэндлер. То есть как-то так:

appl = tornado.web.Application([
            ('ws://localhost:8888/settings', SettingsSocket),
            ('ws://localhost:8888/portcounters', PortCountersSocket),
            ('ws://localhost:8888/eqcounters', EquipmentCountersSocket)
        ], debug=debug)

В твистеде не могу найти как это реализовать. То есть там есть глобальное подключение, а разграничеия по урл-ам нет:
factory = WebSocketServerFactory("ws://localhost:8888")
factory.protocol = WebsocketProtocol
listenWS(factory)



o7412369815963
plusplus
для каждого урл вебсокета был свой хэндлер
Зачем несколько?, одного на все хватает. + говорят что в браузерах есть лимит на кол-во веб-сокетов.
plusplus
o7412369815963
Зачем несколько?, одного на все хватает. + говорят что в браузерах есть лимит на кол-во веб-сокетов.

Видимо ты как-то не понял, что я хочу. Есть у меня страничка, которая отображает динамические графики, она шлет запросы на ws://localhost:8888/graphs. Есть вторая страничка, на которой у меня допустим чатик, он работает с урл ws://localhost:8888/chat. Ну вот, собственно как разрулить по этим урлам в Autobahn, у меня и был вопрос.
o7412369815963
plusplus
Есть у меня страничка … Есть вторая страничка
Это один проект или 2 разных?
Если 2 разных, то по хорошему для каждого нужно свое приложение, а значит урлы разделять не надо.
Если это один проект, то через веб-сокет, с параметрами, можно указывать вызываемую ф-ию (или контроллер), - опять же один урл, через который вызываем разные ф-ии. И как бонус, чат и графики (и ещё что-нибудь) можно будет объединить на одной странице.
plusplus
o7412369815963
Это один проект или 2 разных?
Если 2 разных, то по хорошему для каждого нужно свое приложение, а значит урлы разделять не надо.
Если это один проект, то через веб-сокет, с параметрами, можно указывать вызываемую ф-ию (или контроллер), - опять же один урл, через который вызываем разные ф-ии. И как бонус, чат и графики (и ещё что-нибудь) можно будет объединить на одной странице.

Один проект. Не знаю, показалось удобней с урлами, для каждого урл свой Хэндлер, который определяет соединение и в полях этого хэндлера я аккумулирую данные для каждого соединения, например.

class BaseProtocol(WebSocketServerProtocol):
    def __init__(self):
        self.sum = 0
    def onMessage(self, msg, binary):
        self.sum += 1

Если бы обработчик был один на всех, то в __init__ пришлось бы собирать переменне от всех урл, что выглядело бы как помойка. Нет, это, конечно, решаемый вопрос, просто я не стал заморачиваться и сделал разные урл. Открывать больше одного соединения на странице я не собираюсь, так что посмотрим как получится.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB