如何通过自定义循环通过 websocket 发送数据 "while"
how to send data through websocket via custom loop "while"
我正在尝试在生成数据的 Python 服务器代码和显示数据的 javascript 客户端之间建立连接。
我看到的所有答案都是通过重新定义一些 class 并且你需要一些网络知识才能做到这一点。
我认为这个问题是对 websocket 的简单利用,所以我猜他们是一些简单的利用,我没有看到而不必使用 classes...
我的问题可以在这段代码中得到解决:
# 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 是可能的
你只需要重新定义函数 run_forever
in websocket server.py from :
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
我正在尝试在生成数据的 Python 服务器代码和显示数据的 javascript 客户端之间建立连接。
我看到的所有答案都是通过重新定义一些 class 并且你需要一些网络知识才能做到这一点。
我认为这个问题是对 websocket 的简单利用,所以我猜他们是一些简单的利用,我没有看到而不必使用 classes...
我的问题可以在这段代码中得到解决:
# 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 是可能的
你只需要重新定义函数 run_forever
in websocket server.py from :
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