python websocket 參數

websocket中就有建立連接connect、發送消息send等函數可供使用,但是websocket.WebSocketApp將這些都封裝好了,只用在實例化的時候傳入自定義函數即可,更方便。因此這裏選擇使用websocket.WebSocketApp來模擬客戶行爲。

WebSocketApp也是websocket中的一個類。要使用WebSocketApp中的回調函數需要傳入一系列的可調用對象。在實例化該類時傳入構造函數中的on_open、on_message、on_error就需要傳入一系列的可調用對象,例如自定義的函數。

以下是websocket.WebSocketApp類中的構造函數的摘錄,簡單介紹一下各個傳入值的說明。

def init(self, url, header=[],

on_open=None, on_message=None, on_error=None,

on_close=None, on_ping=None, on_pong=None,

on_cont_message=None,

keep_running=True,get_mask_key=None, cookie=None,

subprotocols=None,

on_data=None)

  

(1)url: websocket的地址。

(2)header: 客戶發送websocket握手請求的請求頭,{‘head1:value1’,‘head2:value2’}。

(3)on_open:在建立Websocket握手時調用的可調用對象,這個方法只有一個參數,就是該類本身。

(4)on_message:這個對象在接收到服務器返回的消息時調用。有兩個參數,一個是該類本身,一個是我們從服務器獲取的字符串(utf-8格式)。

(5)on_error:這個對象在遇到錯誤時調用,有兩個參數,第一個是該類本身,第二個是異常對象。

(6)on_close:在遇到連接關閉的情況時調用,參數只有一個,就是該類本身。

(7)on_cont_message:這個對象在接收到連續幀數據時被調用,有三個參數,分別是:類本身,從服務器接受的字符串(utf-8),連續標誌。

(8)on_data:當從服務器接收到消息時被調用,有四個參數,分別是:該類本身,接收到的字符串(utf-8),數據類型,連續標誌。

(9)keep_running:一個二進制的標誌位,如果爲True,這個app的主循環將持續運行,默認值爲True。

(10)get_mask_key:用於產生一個掩碼。

(11)subprotocols:一組可用的子協議,默認爲空。

 

除此之外,還有on_ping,on_pong等,詳細內容可以查看源代碼。

另外說明一下該類中的一個方法叫run_forever()。Run_forever是一個無限循環,只要這個websocket連接未斷開,這個循環就會一直進行下去。如果在實現websocket連接時使用了心跳包,可以在這個函數中傳入心跳包的間隔,格式如下:

ws.run_forever(ping_interval=SOCKET_PING_INTERVAL,timeout=SOCKET_TIMEOUT)

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章