欢迎访问宙启技术站
智能推送

使用Python的serve()函数创建一个基于WebSocket的实时通信服务器

发布时间:2024-01-20 09:42:36

Python中的WebSocket库如websockets可用于创建基于WebSocket的实时通信服务器。这个库提供了用于创建WebSocket服务器的函数serve(),使得服务器能够监听客户端连接并处理来自客户端的消息。

以下是使用Python的serve()函数创建一个基于WebSocket的实时通信服务器的示例代码:

import asyncio
import websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(message)

start_server = websockets.serve(echo, "localhost", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

此代码创建了一个简单的WebSocket服务器,它接受来自客户端的消息并将其发送回客户端。serve()函数接受两个参数:一个处理来自客户端请求的函数和服务器的主机和端口号。在这个例子中,echo函数用于处理来自客户端的消息,将消息原封不动地发送回客户端。服务器在本地主机上监听8765端口。

要运行这个服务器,可以将代码保存到一个名为server.py的文件中,并在终端中输入以下命令:

python server.py

服务器将在本地主机的8765端口上运行,并开始监听客户端连接。

要连接到这个服务器,可以使用Python的WebSocket库如websockets提供的WebSocket客户端实现。以下是一个简单的客户端示例代码:

import asyncio
import websockets

async def echo():
    async with websockets.connect("ws://localhost:8765") as websocket:
        while True:
            message = input("Enter a message: ")
            await websocket.send(message)
            response = await websocket.recv()
            print(f"Received: {response}")

asyncio.get_event_loop().run_until_complete(echo())

此代码创建了一个WebSocket客户端,它连接到本地主机上运行的服务器,并发送用户输入到服务器。它等待服务器返回的响应,并将其打印到终端。

要运行这个客户端,可以将代码保存到一个名为client.py的文件中,并在终端中输入以下命令:

python client.py

客户端将提示您输入一条消息,并将其发送到服务器。服务器将接收消息并将其原样发送回客户端,客户端将接收并打印服务器返回的消息。这样,实现了一个简单的基于WebSocket的实时通信服务器。