如何从 websocket(客户端)打印流信息?

Posted

技术标签:

【中文标题】如何从 websocket(客户端)打印流信息?【英文标题】:How to print streaming information from a websocket(client)? 【发布时间】:2016-11-26 02:29:27 【问题描述】:

我想使用 websocket 打印流信息。服务器间歇性地发送信息。我在下面的 python 代码中使用while True: 循环打印它。

有没有更好的办法?

from websocket import create_connection


def connect_Bitfinex_trades():
    ws = create_connection("wss://api.sample.com:3000/ws")
    print "Sent"
    while True:
        print "Receiving..."
        result = ws.recv()
        print "Received '%s'" % result

我正在使用https://pypi.python.org/pypi/websocket-client/此处找到的 websocket 客户端

【问题讨论】:

【参考方案1】:

我个人认为这是从 websocket 获取/打印信息的更好解决方案。这个例子是我在 websocket-client 的开发者网站上找到的。

如果您注意到,此示例使用 run_forever 方法,该方法将保持 websocket 连接打开并接收消息,直到发生错误或连接关闭。

import websocket
import thread
import time

def on_message(ws, message):
    print(message)

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")

def on_open(ws):
    def run(*args):
        for i in range(3):
            time.sleep(1)
            ws.send("Hello %d" % i)
        time.sleep(1)
        ws.close()
        print("thread terminating...")
    thread.start_new_thread(run, ())


if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://echo.websocket.org/",
                              on_message = on_message,
                              on_error = on_error,
                              on_close = on_close)
    ws.on_open = on_open
    ws.run_forever()

【讨论】:

以上是关于如何从 websocket(客户端)打印流信息?的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket单工流 - 客户端如何关闭连接?

JavaSE基础九---<IO流 >print打印流,对象输入输出流,对象序列化,transient关键字

Python 和 websockets - 发送音频流

如何在 pusher 的帮助下使用 websocket 从数据库中获取数据?

Playframework 推送到 Websocket

颤振流套接字