2016-11-26 1 views
0

Я хочу печатать потоковые данные с помощью websocket. Сервер отправляет информацию с перерывами. Я печатаю его, используя цикл while True: в приведенном ниже коде python.Как печатать потоковые данные с веб-узла (клиента)?

Есть ли лучший способ?

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 

Я использую клиента WebSocket найти здесь https://pypi.python.org/pypi/websocket-client/

ответ

1

Я лично считаю это лучшее решение для получения/распечатки информации от WebSocket. Этот пример я нашел на веб-сайте разработчика websocket-client.

Если вы заметили, в этом примере используется метод run_forever, который будет поддерживать открытие веб-узла и получать сообщения до тех пор, пока не произойдет ошибка или соединение не будет закрыто.

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() 
Смежные вопросы