如何通过自定义循环通过 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