一个简单的 WebSocket 服务器
项目描述
一个简单的 WebSocket 服务器
- RFC 6455(所有最新浏览器)
- 开箱即用的 TLS/SSL
- 通过 Autobahns Websocket 测试套件
- 支持 Python 2 和 3
安装
pip install simple-websocket-server
回声服务器示例
from simple_websocket_server import WebSocketServer, WebSocket
class SimpleEcho(WebSocket):
def handle(self):
# echo message back to client
self.send_message(self.data)
def connected(self):
print(self.address, 'connected')
def handle_close(self):
print(self.address, 'closed')
server = WebSocketServer('', 8000, SimpleEcho)
server.serve_forever()
打开tests/websocket.html并连接到服务器。
聊天服务器示例
from simple_websocket_server import WebSocketServer, WebSocket
class SimpleChat(WebSocket):
def handle(self):
for client in clients:
if client != self:
client.send_message(self.address[0] + u' - ' + self.data)
def connected(self):
print(self.address, 'connected')
for client in clients:
client.send_message(self.address[0] + u' - connected')
clients.append(self)
def handle_close(self):
clients.remove(self)
print(self.address, 'closed')
for client in clients:
client.send_message(self.address[0] + u' - disconnected')
clients = []
server = WebSocketServer('', 8000, SimpleChat)
server.serve_forever()
打开多个tests/websocket.html并连接到服务器。
想要更快地启动和运行?
有一个例子提供了一个简单的回声和聊天服务器
回声服务器
python tests/example_server.py --example echo
聊天服务器(打开多个测试/websocket.html文件)
python tests/example_server.py --example chat
TLS/SSL 示例
-
生成带密钥的证书
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem -
运行安全的 TSL/SSL 服务器(在这种情况下,cert.pem 文件位于同一目录中)
python tests/example_server.py --example chat --ssl 1 -
通过 https提供tests/websocket.html将证书提供给浏览器。HTTPS 服务器将在本地目录中查找 cert.pem。确保tests/websocket.html也在与运行服务器的目录相同的目录中。
python tests/simple_https_server.py -
将ws://localhost:8000/更改为wss://localhost:8000并单击连接。
注意:如果您在连接时遇到问题,请确保针对异常https://localhost:8000或您要连接的任何主机:端口对在浏览器中添加证书。
对于程序员
connected:握手完成时调用
- self.address:端点的 TCP 地址端口元组
handle_close:端点关闭或出现错误时调用
- self.address:端点的 TCP 地址端口元组
句柄:当有来自客户端端点的传入消息时被调用
- self.address:端点的 TCP 地址端口元组
- self.opcode:WebSocket 帧类型(STREAM、TEXT、BINARY)
- self.data: bytearray (BINARY frame) 或 unicode string payload (TEXT frame)
- self.request:来自 WebSocket 握手的 HTTP 详细信息(请参阅 BaseHTTPRequestHandler)
send_message:向客户端端点发送一些文本或二进制数据
- 将数据作为 unicode 对象发送将发送一个 TEXT 帧
- 将数据作为 bytearray 对象发送将发送 BINARY 帧
close:向端点发送关闭帧
许可
麻省理工学院
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
simple-websocket-server-0.4.2.tar.gz
(9.8 kB
查看哈希)
内置分布
关
simple_websocket_server -0.4.2-py3-none-any.whl 的哈希
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 8a03773527d2c374b571582d6b1d7f8d4c5942399b4320f2d60b4c96ee79ac11 |
|
| MD5 | 9b05ef1e25269aaf4ad933fa0c4bb92a |
|
| 布莱克2-256 | 37e356d769d98642b2613eb5deecc1006f174b78d771ece2204dfd616291f1d6 |