欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python3.6 websocket异步高并发_在Python3.6上的websocket客户端中侦听传入消息时出现问题...

发布时间:2023/12/10 python 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python3.6 websocket异步高并发_在Python3.6上的websocket客户端中侦听传入消息时出现问题... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我正在尝试使用websockets包在Python上构建一个websockets客户端:Websockets 4.0 API

我使用这种方式而不是示例代码,因为我想创建一个websocket客户机类对象,并将其用作网关。在

我在客户端的侦听器方法(receiveMessage)有问题,这会在执行时引发ConnectionClose异常。我想也许这个循环有什么问题。在

这是我尝试构建的简单webSocket客户端:import websockets

class WebSocketClient():

def __init__(self):

pass

async def connect(self):

'''

Connecting to webSocket server

websockets.client.connect returns a WebSocketClientProtocol, which is used to send and receive messages

'''

self.connection = await websockets.client.connect('ws://127.0.0.1:8765')

if self.connection.open:

print('Connection stablished. Client correcly connected')

# Send greeting

await self.sendMessage('Hey server, this is webSocket client')

# Enable listener

await self.receiveMessage()

async def sendMessage(self, message):

'''

Sending message to webSocket server

'''

await self.connection.send(message)

async def receiveMessage(self):

'''

Receiving all server messages and handling them

'''

while True:

message = await self.connection.recv()

print('Received message from server: ' + str(message))

这是主要的:

^{pr2}$

为了测试传入消息侦听器,服务器在建立连接时向客户端发送两条消息。在

客户端正确连接到服务器,并发送问候语。然而,当客户机接收到这两条消息时,它会引发一个ConnectionClosed异常,代码为1000(没有原因)。在

如果删除receiveMessage客户机方法中的循环,则客户机不会引发任何异常,但它只接收一条消息,所以我想我需要一个循环来保持侦听器的活动,但我不知道确切的位置和方式。在

有什么解决办法吗?在

提前谢谢。在

编辑:我意识到,当客户端从服务器接收到所有挂起的消息时,它会关闭连接(并中断循环)。不过,我希望客户能继续收听未来的消息。在

此外,我还尝试添加另一个函数,其任务是向服务器发送“heartbeat”,但客户端还是关闭了连接。在

总结

以上是生活随笔为你收集整理的python3.6 websocket异步高并发_在Python3.6上的websocket客户端中侦听传入消息时出现问题...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。