虽然我可以从服务器接收心跳,但我的代码在运行 30 秒后无法继续接收信息。
我已经搜索了websockets常见问题解答,一些乒乓球通信,但我仍然不知道为什么会发生此错误。
async with websockets.client.connect(uri,close_timeout = None) as ws:
await ws.send(data)
print(data)
result = await ws.recv()
#print(result)
resultdict = json.loads(result)
keydict = resultdict["Key"]
mainkey = json.dumps(keydict)
#mainkey = mainkey.replace('-','')
mainkey = mainkey.replace('"','')
print('原始Key = ',mainkey)
while True:
hb = await ws.recv()
print(hb)
我得到了这个输出
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:12.64', 'AreaList': None}
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:17.65', 'AreaList': None}
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:22.67', 'AreaList': None}
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:27.67', 'AreaList': None}
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:32.69', 'AreaList': None}
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:37.70', 'AreaList': None}
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:42.72', 'AreaList': None}
{'CMD': 'HeartBeat', 'TYPE': None, 'SendTime': '2019-09-10T03:39:47.73', 'AreaList': None}
只收到了 7 条消息,我的代码仍在运行,但没有打印消息,最后崩溃了。
你可能应该使用这样的东西:
ws = websocket.WebSocketApp(uri, on_message = on_message, on_error = on_error, on_close = on_close)
ws.on_open = self.on_open
ws.run_forever()
def on_message(message):
print(message)
def on_error(error):
print(error)
def on_close():
print("### closed ###")
def on_open(self):
ws = self.ws
p = 'ANY KIND OF OPENING YOU NEED'
p_load = json.loads(p)
p_json = json.dumps(p_load)
ws.send(p_json)
在打开消息中,您可以接收任何消息。您可能唯一需要做的就是每x秒发送一次心跳。