Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2013 14:27:12

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Twisted autobahn вебсокеты. Как разграничить обработчики по url?

Разбираюсь с твистедом. В торнадо было так: для каждого урл вебсокета был свой хэндлер. То есть как-то так:

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)





Офлайн

#2 Окт. 23, 2013 07:03:23

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Twisted autobahn вебсокеты. Как разграничить обработчики по url?

Офлайн

#3 Окт. 23, 2013 10:48:55

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Twisted autobahn вебсокеты. Как разграничить обработчики по url?

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

Офлайн

#4 Окт. 23, 2013 14:42:12

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Twisted autobahn вебсокеты. Как разграничить обработчики по url?

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

Видимо ты как-то не понял, что я хочу. Есть у меня страничка, которая отображает динамические графики, она шлет запросы на ws://localhost:8888/graphs. Есть вторая страничка, на которой у меня допустим чатик, он работает с урл ws://localhost:8888/chat. Ну вот, собственно как разрулить по этим урлам в Autobahn, у меня и был вопрос.



Офлайн

#5 Окт. 23, 2013 18:41:13

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Twisted autobahn вебсокеты. Как разграничить обработчики по url?

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

Офлайн

#6 Окт. 24, 2013 06:25:25

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Twisted autobahn вебсокеты. Как разграничить обработчики по url?

o7412369815963
Это один проект или 2 разных?
Если 2 разных, то по хорошему для каждого нужно свое приложение, а значит урлы разделять не надо.
Если это один проект, то через веб-сокет, с параметрами, можно указывать вызываемую ф-ию (или контроллер), - опять же один урл, через который вызываем разные ф-ии. И как бонус, чат и графики (и ещё что-нибудь) можно будет объединить на одной странице.

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

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

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version