首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python WebSocket客户端正在连接但不发送消息

Python WebSocket客户端正在连接但不发送消息
EN

Stack Overflow用户
提问于 2017-12-20 06:52:14
回答 1查看 1.8K关注 0票数 2

当使用websocket客户端向django服务器发送测试消息时,我无法获得既可以发送消息又可以接收消息的脚本。

下面的python脚本就是我尝试过的:

代码语言:javascript
复制
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

此连接成功,由服务器指示,并接收从服务器发送的消息,但不发送任何内容。

定期在终端上显示类似这样的内容:

代码语言:javascript
复制
send: b'\x8a\x84\xe2\xe9\xa8\xe2\x8f\xdc\xe2\x84'

如果我简单地使用

代码语言:javascript
复制
ws = websocket.WebSocket()
ws.connect(url)
ws.send("hello")

然后这就完美地工作了。这表明上面显示的我的小python脚本有问题。

EN

回答 1

Stack Overflow用户

发布于 2017-12-21 05:10:35

发现了问题,当然是愚蠢的错误:

代码语言:javascript
复制
 ws_listener = threading.Thread(target=ws.run_forever())

应该是:

代码语言:javascript
复制
 ws_listener = threading.Thread(target=ws.run_forever)

不带括号。

第一次将ws.run_forever的结果传递给目标,第二次将ws.run_forever设置为目标,这是预期的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47896355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档