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

使用Python的serve()函数构建一个基本的WebSocket服务器。

发布时间:2023-12-28 17:10:44

要构建一个基本的WebSocket服务器,我们需要使用Python的websockets库。websockets库是一个轻量级的WebSocket实现,可以方便地与现有的Web框架集成。

首先,我们需要安装websockets库。可以使用以下命令进行安装:

pip install websockets

接下来,我们可以使用以下代码示例来构建一个基本的WebSocket服务器:

import asyncio
import websockets

# 定义WebSocket服务器的回调函数
async def server(websocket, path):
    # 接收从客户端发送的消息
    message = await websocket.recv()
    print(f"Received message: {message}")

    # 发送消息给客户端
    response = "Hello from the server!"
    await websocket.send(response)
    print(f"Sent message: {response}")

# 启动WebSocket服务器
start_server = websockets.serve(server, 'localhost', 8000)

# 运行事件循环
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

在上面的代码中,我们定义了一个名为server的回调函数,它被用作WebSocket服务器的处理程序。当有客户端连接到服务器时,server函数被调用。它首先接收从客户端发送的消息,然后发送一条简单的回复消息给客户端。

要启动WebSocket服务器,我们使用websockets.serve函数将server回调函数与IP地址和端口号绑定。在本例中,服务器将在本地主机的端口8000上运行。

最后,我们使用asyncio.get_event_loop().run_until_complete来启动事件循环并运行WebSocket服务器,然后使用asyncio.get_event_loop().run_forever使服务器保持运行状态。

为了测试服务器,您可以使用一个WebSocket客户端来建立与服务器的连接并发送消息。以下是一个简单的示例使用websocket库的WebSocket客户端代码:

import asyncio
import websockets

async def client():
    async with websockets.connect('ws://localhost:8000') as websocket:
        # 发送消息给服务器
        message = "Hello from the client!"
        await websocket.send(message)
        print(f"Sent message: {message}")

        # 接收服务器的回复消息
        response = await websocket.recv()
        print(f"Received message: {response}")

# 运行WebSocket客户端
asyncio.get_event_loop().run_until_complete(client())

在上面的示例中,我们使用asynciowebsockets库来创建一个WebSocket客户端。它首先建立与服务器的连接,然后发送一条简单的消息给服务器,并等待服务器的回复消息。然后,我们可以在控制台上查看发送和接收的消息。

通过运行上述服务器和客户端代码,您将能够构建一个简单的WebSocket服务器,并与其进行基本的通信。请注意,服务器和客户端代码需要在不同的终端窗口中分别运行。