我在Python中创建一个程序,它读取未知间隔的数据流。该程序还通过websockets发送此数据。 该程序是服务器,它将收到的数据发送给客户端。
这是服务器的代码:
SecurityContext
但我希望能够在此循环中使用class WebSocketHandler(tornado.websocket.WebSocketHandler):
def initialize(self):
print 'Websocket opened'
def open(self):
print 'New connection'
self.write_message('Test from server')
def on_close(self):
print 'Connection closed'
def test(self):
self.write_message("scheduled!")
def make_app():
return tornado.web.Application([
(r'/ws', WebSocketHandler),
])
if __name__ == '__main__':
application = make_app()
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
:
write_message
我该怎么做?
编辑:使用连接的两个线程都会出现问题吗?看起来它适用于1个连接。def read_function():
while True:
time.sleep(10) # a while loop to simulate the reading
print 'read serial'
str = 'string to send'
# send message here to the clients
答案 0 :(得分:1)
在WebsocketHandler外部使用connections = set()
,并在打开与connections.add(self)
的连接时添加每个客户端。不要忘记在结束时使用connections.remove(self)
删除它们。
现在,您可以通过以下方式访问websocket线程中的write_message
:[client.write_message('#your_message') for client in connections]