python-websocket-server:轻量级Python WebSocket服务器完全指南
python-websocket-server是一个轻量级的Python WebSocket服务器,无需任何外部依赖,让开发者能够快速搭建实时通信应用。无论是原型开发、测试还是为应用创建GUI,它都能提供简洁而强大的支持。
为什么选择python-websocket-server? 🚀
这款WebSocket服务器具有以下核心优势:
- 零依赖:纯Python实现,无需安装额外包
- 简洁API:直观的接口设计,降低学习成本
- 多客户端支持:轻松处理多个并发连接
- Python3.6+兼容:支持现代Python版本
- SSL支持:可配置安全的WebSocket连接(wss协议)
快速安装指南 ⚡
通过pip可以轻松安装python-websocket-server:
pip install websocket-server
如果你需要从源代码安装,可以克隆仓库后进行安装:
git clone https://gitcode.com/gh_mirrors/py/python-websocket-server
cd python-websocket-server
python setup.py install
快速开始示例 🌟
服务器端实现
创建一个简单的WebSocket服务器只需几行代码:
import logging
from websocket_server import WebsocketServer
def new_client(client, server):
server.send_message_to_all("新客户端已连接")
def message_received(client, server, message):
server.send_message_to_all(f"客户端 {client['id']} 说: {message}")
# 初始化服务器
server = WebsocketServer(host='127.0.0.1', port=9001, loglevel=logging.INFO)
server.set_fn_new_client(new_client)
server.set_fn_message_received(message_received)
# 启动服务器
server.run_forever()
将上述代码保存为server.py,然后运行:
python server.py
客户端实现
项目中提供了一个简单的HTML客户端示例client.html,打开后即可与服务器进行实时通信。客户端主要代码如下:
// 连接到WebSocket服务器
ws = new WebSocket("ws://localhost:9001/");
// 处理接收到的消息
ws.onmessage = function(e) {
output("收到消息: " + e.data);
};
// 发送消息
function onSubmit() {
var input = document.getElementById("input");
ws.send(input.value);
output("发送: " + input.value);
}
核心API详解 📚
WebsocketServer类
服务器的核心功能通过WebsocketServer类实现,初始化参数包括:
port:服务器监听端口host:绑定的主机地址(默认为127.0.0.1,设为0.0.0.0允许外部连接)loglevel:日志级别(默认为WARNING)key和cert:SSL相关配置
主要方法
| 方法 | 描述 | 参数 |
|---|---|---|
run_forever() | 启动服务器并持续运行 | threaded: 是否在独立线程运行 |
set_fn_new_client() | 设置新客户端连接回调函数 | function(client, server) |
set_fn_client_left() | 设置客户端断开连接回调函数 | function(client, server) |
set_fn_message_received() | 设置消息接收回调函数 | function(client, server, message) |
send_message() | 向指定客户端发送消息 | client, message |
send_message_to_all() | 向所有客户端广播消息 | message |
shutdown_gracefully() | 优雅关闭服务器 | status, reason(可选) |
客户端对象结构
回调函数中会接收到客户端对象,结构如下:
{
'id': 客户端唯一标识,
'handler': 客户端处理对象,
'address': (IP地址, 端口)
}
高级功能:SSL加密通信 🔒
要启用安全的WebSocket连接(wss协议),只需在初始化服务器时提供SSL证书:
server = WebsocketServer(
host='127.0.0.1',
port=9001,
loglevel=logging.INFO,
key="key.pem",
cert="cert.pem"
)
客户端连接时使用wss://协议:
ws = new WebSocket("wss://localhost:9001/");
测试与调试 🧪
项目提供了完整的测试套件,位于tests/目录下。运行所有测试:
pytest
常见调试技巧:
- 设置
loglevel=logging.DEBUG获取详细日志 - 使用
server.clients属性查看当前连接的客户端 - 实现
set_fn_client_left()回调跟踪断开连接的客户端
实际应用场景 💡
python-websocket-server适用于多种实时通信场景:
- 实时聊天应用
- 实时数据仪表盘
- 多人协作工具
- 远程监控系统
- 游戏服务器
总结
python-websocket-server提供了一个简单而强大的解决方案,让Python开发者能够轻松实现WebSocket通信。其零依赖特性和简洁API特别适合快速开发和原型验证。无论是初学者还是有经验的开发者,都能快速上手并将其集成到自己的项目中。
要了解更多细节,可以查看项目源代码websocket_server/或运行示例server.py进行实践。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



