2017-12-19 8 views
1

websocketクライアントを使用してテストメッセージをdjangoサーバに送信しているときに、メッセージを送受信できるスクリプトを取得できません。Python WebSocketクライアントメッセージを接続していますが、メッセージを送信していません

import websocket 
import threading 
import json 
from time import sleep 

# handle message event 
def on_message(ws, message): 
    print("message recieved: %s" % message) 

# handle close event 
def on_close(ws): 
    print("channel closed") 

# execute as main script 
if __name__ == "__main__": 
    websocket.enableTrace(True) 
    # new app object connecting to headstation 
    ws = websocket.WebSocketApp("ws://192.168.0.106:8000/?testI123", on_message = on_message, on_close = on_close) 
    # run in a new thread - kill if script ends 
    ws_listener = threading.Thread(target=ws.run_forever()) 
    ws_listener.daemon = True 
    # start second thread 
    ws_listener.start() 

    # attempt connection 5 times 
    timeout = 5 
    while not ws.sock.connected and timeout: 
     sleep(1) 
     timeout -= 1 
    # error on timeout 
    if (timeout == 0): 
     print("Connection to server timed out") 

    print("test 1") 
    # periodically send test message to server 
    message_num = 0 
    while ws.sock.connected: 
     # send node id and message 
     message = 'hello %d'%message_num 
     ws.send(message) 
     sleep(1) 
     message_num += 1 

この接続に成功し、サーバーによって起訴され、サーバーから送信されたメッセージを受信しますが、何も送信しません:

次のPythonスクリプト

は、私がしようとしたものです。

定期的に、このような何かが端末に表示されます:

send: b'\x8a\x84\xe2\xe9\xa8\xe2\x8f\xdc\xe2\x84' 

私は単に

ws = websocket.WebSocket() 
ws.connect(url) 
ws.send("hello") 

を使用する場合、これは完璧に動作します。上に表示された私の小さなpythonスクリプトでは何か問題を示唆しています。問題を発見

答えて

0

、当然の愚かな間違い:

ws_listener = threading.Thread(target=ws.run_forever()) 

は次のようになります。

ws_listener = threading.Thread(target=ws.run_forever) 

括弧なし。

最初にws.run_foreverの結果がターゲットに渡され、2つ目がターゲットとしてws.run_foreverを設定されます。これが意図した結果です。

関連する問題