我需要将系统日志发送到浏览器,因此我有一个基于龙卷风的websocket服务器运行如此。
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客户端连接到此websocket的简单方法,最好由Tornado提供支持。客户端不需要接收消息 - 只发送消息。我以为我的回答是这个SO帖子,
How to run functions outside websocket loop in python (tornado)
...但是我需要在发生日志事件时发送消息,最好是从我的代码解析事件。到目前为止,我遇到的例子都围绕着基于Tornado的服务器和基于js的客户端。有短暂的&基于甜龙卷风的客户端,只发送可以从for-loop调用的消息?
答案 0 :(得分:2)
有tornad-websocket-client个项目。注意它。
还有简单的websocket-client来发送消息。
答案 1 :(得分:2)
此外,我开发了一个完整的Tornado WebSocket客户端/服务器示例。
https://github.com/ilkerkesen/tornado-websocket-client-example
答案 2 :(得分:1)
Tornado包含一个websocket客户端:http://www.tornadoweb.org/en/stable/websocket.html#client-side-support