Python WebSocket服务器
WebSocket是一种在单个TCP连接上进行全双工通信的网络协议,它可以实现实时通信,非常适合用于即时通讯应用程序或在线游戏等。在本文中,我们将使用Python来搭建一个简单的WebSocket服务器。
准备工作
首先,我们需要安装一个Python的WebSocket库,推荐使用websockets
库。可以通过以下命令来安装:
pip install websockets
创建WebSocket服务器
接下来,让我们来创建一个简单的WebSocket服务器。在创建服务器之前,我们需要先 import websockets
和 asyncio
这两个库。
import asyncio
import websockets
然后,我们可以定义一个处理客户端消息的函数 on_message
,以及一个接收客户端连接的函数 on_connect
。
async def on_message(websocket, path):
while True:
message = await websocket.recv()
print(f"Received message: {message}")
await websocket.send(f"Received message: {message}")
async def on_connect(websocket, path):
print("Client connected")
await on_message(websocket, path)
start_server = websockets.serve(on_connect, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
在上面的代码中,我们定义了一个 on_message
函数,用来处理客户端发送的消息,并向客户端发送一个回复。我们还定义了一个 on_connect
函数,用来处理客户端的连接。
最后,我们创建了一个WebSocket服务器,并绑定在 localhost
的端口 8765
上。
运行WebSocket服务器
完成以上代码后,我们可以将其保存在一个 .py
文件中,比如 server.py
。然后通过以下命令来运行WebSocket服务器:
python server.py
接着,我们可以编写一个客户端程序来连接到这个WebSocket服务器。客户端发送消息后,服务器将会收到消息并回复。
WebSocket客户端
我们可以使用浏览器自带的开发工具或者简单的WebSocket客户端来与我们的服务器进行通信。下面给出一个简单的Python WebSocket客户端示例:
import asyncio
import websockets
async def send_message():
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: {response}")
asyncio.get_event_loop().run_until_complete(send_message())
上面的客户端代码首先连接到 localhost:8765
,然后发送用户输入的消息,并打印服务器返回的消息。
结语
通过本文,我们学习了如何使用Python中的 websockets
库创建一个简单的WebSocket服务器,并编写了一个与服务器通信的WebSocket客户端。