2015-02-18 4 views
2

Мне нужно отправить системные журналы в браузер, и поэтому у меня есть сервер веб-сервера, основанный на торнадо, который работает так.Клиент python websocket - отправка сообщений с кода python на WebSocketServer

class WSHandler(tornado.websocket.WebSocketHandler): 

    def check_origin(self, origin): 
     return True 

    def get(self, *args, **kwargs): 
     self.ip = self.get_argument('ip', None) 
     self.action = self.get_argument('action', None) 
     super(WSHandler, self).get(self, *args, **kwargs) 

    def open(self, *args, **kwargs): 

     clients.append(self) 

    def on_message(self, message): 

     ll = eval(message) 

     for cl in clients: 
      if cl.ip and cl.ip != ll.user: 
       continue 
      if cl.action and cl.action != ll.action: 
       continue 

      message = '%s %s' % (ll.action, ll.url) 
      cl.write_message(message) 

    def on_close(self): 
     try: 
      clients.remove(self) 
     except ValueError: 
      pass 

примеры я столкнулся до сих пор вращаются вокруг серверов и Tornado на основе JS-клиентов.

Что мне нужно, однако, это простой способ подключения к этому веб-сайту от клиента Python, предпочтительно с поддержкой Tornado. Клиенту не нужно получать сообщения - отправляйте их только. Я думал, что мой ответ с этим СЦ пост,

How to run functions outside websocket loop in python (tornado)

... но мне нужно отправить сообщение всякий раз, когда происходит событие журнала, и предпочтительно от моего кода, который разборе событий. Примеры, с которыми я столкнулся до сих пор, вращаются вокруг серверов на основе Tornado и на основе js-клиентов. Есть ли короткий & клиент, основанный на торнадо, который отправляет только сообщения, которые можно вызывать из цикла for?

ответ

1

Кроме того, я разработал полный Tornado WebSocket пример Client/Server.

https://github.com/ilkerkesen/tornado-websocket-client-example

Если вы хотите WebSocket аутентификации/авторизации, посмотрите на мои другие проекты trebol и sugar.

+0

SHAZZAM !! Мне удалось это сделать с вашим примером. Возможно, мне следовало бы и на ранних постах, но я этого не делал. Спасибо всем за вашу помощь. – Thinkwell

2

tornad-websocket-client проект. Обратите внимание на это.
Также есть простой websocket-client, чтобы просто отправлять сообщения.

+0

Tornado-websocket-клиент выглядит великолепно, за исключением того, что я не могу понять, как его использовать. Я попытался instantating как пример класса показывает, WS = HelloSocket ('WS: //echo.websocket.org') ws.connect() , а затем с помощью ws.write_message (МВП), но это не делает отправьте на сервер. Не могу понять, что я делаю неправильно. Я получил websocket-клиент для работы ... так что я вышел из своего джема, но я надеялся на что-то более легкое. – Thinkwell

1

Торнадо включает в себя WebSocket клиента: http://www.tornadoweb.org/en/stable/websocket.html#client-side-support

+0

Я столкнулся с этим в документах, но не могу понять, как его использовать. Не встречались никакие примеры в дикой природе. Как вы создаете экземпляр клиента, а затем используете соединение в шлюзе? Вот в чем вопрос? – Thinkwell

+0

Хм, нам нужны лучшие документы и примеры для этого. Сейчас лучшие примеры приведены в тестах: https://github.com/tornadoweb/tornado/blob/6932b7384adb75cf505d59cfed5c13868d1439a4/tornado/test/websocket_test.py#L131-136 –

Смежные вопросы