我试图在生成数据的Python服务器代码和显示它的javascript客户端之间建立连接。 我看到的所有答案都是通过重新定义一些课程而你需要在网络中安静一些知识才能做到这一点。 我认为这个问题只是对websocket的简单使用,所以我猜他们是一些简单的利用,我没有看到,不必使用类...
我的问题可以通过以下代码减少:
# definition of the websocket
application = web.Application([(r'/websocket',WebSocketHandler)])
application.listen(8001)
while True:
val = generate_data()
application.send(val) #it's this part that i miss
这里真正的问题是我的函数generate_data()
有点复杂并显示一些东西,现在传递它在class WShandler(..)
的函数中是不正确的方法它是复杂的,最重要的是没有工作。更多的发送数据的时间必须由我的while循环处理,而不是由我将定义的一些超时。
使用库websocket-server https://github.com/Pithikos/python-websocket-server你可能只需要在websocket server.py中重新定义函数run_forever
:
logger.info("Listening on port %d for clients.." % self.port)
self.serve_forever()
至 :
logger.info("Listening on port %d for clients.." % self.port)
# self.serve_forever()
_serve = self.serve_forever
server_thread = threading.Thread(target=_serve)
# server_thread.daemon = True
server_thread.start()
在你的代码之后:
r = WebsocketServer(8001, host='localhost', loglevel=logging.INFO)
server.run_forever()
while True:
val = generate_data()
server.send_message_to_all(val)
它就像一个魅力。也许他们是龙卷风做同样的方式..
资源: https://github.com/Pithikos/python-websocket-server/issues/30 Threaded, non-blocking websocket client