跳转到主要内容

WebSocket协议(RFC 6455 & 7692)的实现

项目描述

rtd pypi-v pypi-pyversions pypi-l pypi-wheel

什么是trio-websockets

trio-websockets是一个基于异步I/O框架trio的Python库,用于构建WebSocket服务器客户端

目前正在开发中。当前状态是

  • 客户端功能正常。

  • 服务器端尚未完成。

库的历史

代码最初是从aaugustin的websockets库分叉的,以下是一些更改

  • 移除所有asyncio相关内容,用trio替换。

  • 移除WebSocket协议代码,用wsproto替换。

原始websockets库还剩下什么?

  • 大部分剩余的代码似乎是围绕连接状态的额外错误检查。尝试在已关闭的连接上写入时,您将收到一个ConnectionClosed异常,而不是“trio.BrokenStreamError”。

  • 与websockets相同的/非常相似的用户界面,可能比原始的wsproto连接(例如,公开属性如.subprotocol,wsproto在连接已建立事件期间传递)更友好。

待办事项

  • 移植服务器端。

  • 使示例运行。

  • 使测试运行。

  • 支持curio。

  • 清理文档和readme。

  • 尝试使用不同的架构,使用读者/写入者任务。

如何使用它

这是一个输出“Hello world!”的客户端。

#!/usr/bin/env python

import trio
import trio_websockets

async def hello(uri):
    async with trio_websockets.connect(uri) as websocket:
        await websocket.send("Hello world!")

trio.run(hello, 'ws://localhost:8765')

这是一个回显服务器(适用于Python ≥ 3.6)

#!/usr/bin/env python

import trio
import trio_websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(message)

trio.run(trio_websockets.serve, echo, 'localhost', 8765)

看起来怎么样? 从这里开始

还有其他什么吗?

欢迎提交错误报告、补丁和建议!只需打开一个 问题 或发送一个 拉取请求

trio-websockets 采用 BSD许可 发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

trio-websockets-0.2.tar.gz (34.7 kB 查看哈希)

上传时间

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面