Trio的WebSocket库
项目描述
Trio WebSocket
本库实现了WebSocket协议的服务端和客户端部分,力求安全、正确和易用。它基于wsproto项目,该项目是一个Sans-IO状态机,实现了WebSocket协议的大部分功能,包括帧、编解码器和事件。此库使用Trio框架进行I/O处理。此库通过了Autobahn测试套件。
本README包含对项目的简要介绍。完整文档在这里提供。
替代方案
如果您只需要服务器端,可以使用通过quart-trio扩展的Quart。虽然trio-websocket更加灵活,但Quart在单个框架内覆盖HTTP和WebSocket,并且从同一端口提供服务非常简单。尚未进行性能比较。
安装
此库需要Python 3.7或更高版本。要从PyPI安装
pip install trio-websocket
客户端示例
此示例演示了如何打开WebSocket URL
import trio
from sys import stderr
from trio_websocket import open_websocket_url
async def main():
try:
async with open_websocket_url('wss://echo.websocket.org') as ws:
await ws.send_message('hello world!')
message = await ws.get_message()
print('Received message: %s' % message)
except OSError as ose:
print('Connection attempt failed: %s' % ose, file=stderr)
trio.run(main)
WebSocket上下文管理器在进入块之前自动连接,在退出块之前自动断开连接。完整的API提供了很多灵活性和额外选项。
服务器示例
WebSocket服务器需要绑定地址、端口号和处理传入连接的协程。此示例演示了一个“回显服务器”,它将每个传入的消息以相同的传出消息回复。
import trio
from trio_websocket import serve_websocket, ConnectionClosed
async def echo_server(request):
ws = await request.accept()
while True:
try:
message = await ws.get_message()
await ws.send_message(message)
except ConnectionClosed:
break
async def main():
await serve_websocket(echo_server, '127.0.0.1', 8000, ssl_context=None)
trio.run(main)
服务器的处理程序echo_server(…)
接收一个连接请求对象。可以使用此对象检查客户端请求并修改握手,然后可以将其交换为实际的WebSocket对象ws
。再次强调,完整的API提供了很多灵活性和额外选项。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
trio-websocket-0.11.1.tar.gz (26.5 kB 查看哈希值)
构建分发
trio_websocket-0.11.1-py3-none-any.whl (17.4 kB 查看哈希值)
关闭
trio-websocket-0.11.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 18c11793647703c158b1f6e62de638acada927344d534e3c7628eedcb746839f |
|
MD5 | 3d9bb51b62f562dbdbc2ec067132c4a6 |
|
BLAKE2b-256 | dd36abad2385853077424a11b818d9fd8350d249d9e31d583cb9c11cd4c85eda |
关闭
trio_websocket-0.11.1-py3-none-any.whl 的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 520d046b0d030cf970b8b2b2e00c4c2245b3807853ecd44214acd33d74581638 |
|
MD5 | 8695c0aa11845c6fbf4b06b16bb6dc93 |
|
BLAKE2b-256 | 48bea9ae5f50cad5b6f85bd2574c2c923730098530096e170c1ce7452394d7aa |