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

如何在Python中实现Websockets服务端

发布时间:2024-01-02 15:24:20

在Python中,可以使用第三方库websockets实现Websockets服务端。下面是一个实现Websockets服务端的例子:

首先,需要安装websockets库:

pip install websockets

然后,可以使用以下代码实现一个简单的Websockets服务端:

import asyncio
import websockets

# 连接建立时的处理函数
async def handle(websocket, path):
    # 接收客户端发送的消息
    while True:
        message = await websocket.recv()
        print(f"Received message from client: {message}")

        # 向客户端发送消息
        response = f"Server received message: {message}"
        await websocket.send(response)
        print(f"Sent message to client: {response}")

# 启动Websockets服务
async def start_server():
    server = await websockets.serve(handle, "localhost", 8765)
    print("Websockets server started")
    
    # 保持服务运行状态
    await server.wait_closed()

# 启动异步事件循环
async def main():
    await start_server()

asyncio.run(main())

上述代码中,handle函数用于处理连接建立时的逻辑。在该函数中,可以接收客户端发送的消息,处理后再向客户端发送响应。

start_server函数用于启动Websockets服务。在该函数中,调用websockets.serve方法创建一个Websockets服务器,将handle函数作为处理函数传递给该服务器。localhost表示服务器的主机地址,8765表示服务器的端口号。

最后,使用asyncio.run方法启动异步事件循环,调用main函数运行Websockets服务。

可以使用以下代码作为客户端来测试这个Websockets服务端:

import asyncio
import websockets

async def send_message():
    async with websockets.connect("ws://localhost:8765") as websocket:
        message = input("Enter message: ")
        await websocket.send(message)
        print("Message sent")

        response = await websocket.recv()
        print(f"Received response from server: {response}")

asyncio.run(send_message())

上述代码中,send_message函数用于与Websockets服务端建立连接,并发送消息。首先,使用websockets.connect方法创建一个Websockets连接,指定要连接的服务端地址。然后,使用await websocket.send方法发送消息,使用await websocket.recv方法接收服务端的响应。

运行以上两份代码后,可以在客户端输入消息,然后在服务端输出接收到的消息,并向客户端发送响应。

这是一个简单的Websockets服务端的例子,可以通过添加逻辑和功能来实现更复杂的业务需求。