gpt4 book ai didi

python - 什么可以关闭 websocket 连接?

转载 作者:行者123 更新时间:2023-12-01 03:28:29 26 4
gpt4 key购买 nike

我使用websocket_server为了提供一种单向(服务器到客户端)Websocket 连接。

我在服务器上有几个线程,它们以给定的时间间隔(while True: ... time.sleep(60))查询 API,然后执行 server.send_message() 调用来更新客户端。所有这些都运行良好。

有时,没有任何特殊原因,我会崩溃:

Exception in thread Thread-3:
Traceback (most recent call last):
File "C:\Python35\lib\threading.py", line 914, in _bootstrap_inner
self.run()
File "C:\Python35\lib\threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "D:/Dropbox/dev/domotique/webserver.py", line 266, in calendar
server.send_message(client, json.dumps({"calendar": events}))
File "C:\Python35\lib\site-packages\websocket_server\websocket_server.py", line 71, in send_message
self._unicast_(client, msg)
File "C:\Python35\lib\site-packages\websocket_server\websocket_server.py", line 119, in _unicast_
to_client['handler'].send_message(msg)
File "C:\Python35\lib\site-packages\websocket_server\websocket_server.py", line 194, in send_message
self.send_text(message)
File "C:\Python35\lib\site-packages\websocket_server\websocket_server.py", line 240, in send_text
self.request.send(header + payload)
BrokenPipeError: [WinError 10058] A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call

我的代码中没有关闭调用。 还有什么可以关闭 websocket?

最佳答案

WebSocket客户端可以要求服务器关闭连接(或直接关闭)。来自 the library's code :

if not b1:
logger.info("Client closed connection.")
self.keep_alive = 0
return
if opcode == CLOSE_CONN:
logger.info("Client asked to close connection.")
self.keep_alive = 0
return

您可以检查self.keep_alive来了解套接字是否仍然打开。

关于python - 什么可以关闭 websocket 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com