Python中使用Websockets实现实时通信的方法
发布时间:2024-01-02 15:25:35
Python中使用Websockets实现实时通信可以通过第三方库websockets来实现。下面是一个使用例子,包括服务端和客户端的实现。
首先,需要安装websockets库:
$ pip install websockets
### 服务端
import asyncio
import websockets
# 定义处理客户端消息的逻辑
async def handle_message(websocket, path):
async for message in websocket:
# 处理从客户端接收到的消息
# 此处仅简单地返回同样的消息给客户端
await websocket.send(message)
# 创建WebSocket服务端并启动
start_server = websockets.serve(handle_message, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
上述代码中,我们使用websockets.serve()方法创建一个WebSocket服务端,并指定要监听的地址和端口号。handle_message函数定义了如何处理从客户端接收到的消息,这里我们仅简单地将收到的消息原样返回给客户端。
async for message in websocket语句用于循环接收客户端发送的消息,每次接收到消息后会执行下面的处理逻辑。
最后两行代码用于启动WebSocket服务器,并一直运行,不断接收和处理客户端发来的消息。
### 客户端
import asyncio
import websockets
# 定义客户端消息的处理逻辑
async def handle_message(message):
print(message)
# 定义客户端发送消息的逻辑
async def send_message():
uri = "ws://localhost:8765" # WebSocket服务端地址
async with websockets.connect(uri) as websocket:
while True:
# 从控制台读取输入
message = input("Enter message: ")
# 发送消息给服务端
await websocket.send(message)
# 接收服务端的消息
response = await websocket.recv()
# 处理服务端的消息
await handle_message(response)
# 如果输入'bye'则结束通信
if message == 'bye':
break
# 启动客户端
asyncio.get_event_loop().run_until_complete(send_message())
上述代码中,我们使用websockets.connect()方法创建一个WebSocket客户端,并指定连接的地址。然后通过input()函数从控制台读取输入的消息,并通过websocket.send()方法将消息发送给服务端。
使用await websocket.recv()方法接收服务端的消息,并使用handle_message函数处理接收到的消息。
最后通过判断输入的消息是否为'bye'来结束通信。
运行客户端代码后,可以在控制台输入消息并实时发送给服务端,同时接收服务端实时返回的消息。
以上就是使用websockets库实现Python中的WebSocket实时通信的方法及示例。通过这个例子,你可以简单了解WebSocket的工作原理和如何使用Python实现实时通信。
