【问题标题】:how to send data through websocket via custom loop "while"如何通过自定义循环“while”通过websocket发送数据
【发布时间】:2019-03-06 18:38:28
【问题描述】:

我正在尝试在生成数据的 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 循环处理,而不是我将定义的某个超时。

【问题讨论】:

    标签: python websocket tornado


    【解决方案1】:

    使用库 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

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2014-02-04
      • 1970-01-01
      • 2021-11-29
      • 2021-06-12
      相关资源
      最近更新 更多