5 个版本 (1 个稳定版)
1.0.0 | 2021 年 8 月 18 日 |
---|---|
0.1.3 | 2021 年 6 月 24 日 |
0.1.2 | 2021 年 6 月 16 日 |
0.1.1 | 2021 年 4 月 22 日 |
0.1.0 | 2021 年 4 月 21 日 |
#179 在 WebSocket
37KB
454 行
quicksocket
使用 Rust、tokio 和 tokio-tungstenite 以及 pyo3 构建的一个简单的 WebSocket 服务器。支持 Windows、macOS 和 Linux。
从 1.0.0 版本开始更稳定,但功能仍然有限。你只能得到一个服务器(需要添加一个 合适的 服务器类),并且功能相对较少。
pip install quicksocket
Quicksocket 快速入门
quicksocket.server.Server
为从 quicksocket
模块直接使用的静态方法提供了类型注解。
import quicksocket
# Start the server on whatever port you want.
server = quicksocket.server.Server()
server.start(port=59994)
# You have to poll the server, which runs on a native Rust thread.
#
# No need for `asyncio` here! Do it however you want.
# But you'll need some sort of loop for this.
new_clients = server.drain_new_client_events()
cli_msgs = server.drain_client_messages()
# Send messages in batches for better efficiency. Often, python's "threading" is a performance bottleneck.
message = "Hello, world!"
another_message = "Yes, hello!"
server.send_messages([message, another_message])
# Check if the server is running.
is_server_running = server.is_running()
# Stop the server.
server.stop()
有点冗长,仍在稳定化中。
从 1.0 版本开始,初始连接端口可配置,只需将端口传递给 start
方法即可。
Quicksocket 的代码最初是为与 Ultraleap 的 Web Visualizer 项目一起使用而设计的,因此它旨在用于控制台 Python 可视化服务器,并利用普通的 println!
进行日志记录。即将推出:适当的 env 日志记录。
构建
你需要 Rust 和访问 3.6 或更高版本的 python.exe。
你还需要 OpenSSL。请参阅 Ubuntu 部分,了解 Ubuntu 上的安装详情。在 Windows 上配置 OpenSSL 稍微复杂。您可以使用 Chocolatey 或 vcpkg,或下载 OpenSSL 的二进制分发版。您可能需要将 $Env:OPENSSL_DIR
(PowerShell 语法)设置为您的安装目录,以便在 Windows 构建会话中使用 Chocolatey、二进制安装,或者如果 vcpkg 没有在您的会话中激活。macOS 应该默认有它。
为您的 Python/OS 组合构建 wheel
pip install maturin
maturin build
如果您只想为您的 OS 构建原始的 .pyd
或类似的 Python 原生模块文件,您只需使用 cargo
构建。
cargo build --release
为 Python 3.6 到 3.9 版本提供了 Windows、macOS 和 Linux 的 CI。请查看“操作”选项卡。
Ubuntu
确保您已安装 libssl 和 libpython
sudo apt-get install libssl-dev
sudo apt-get install libpython3-dev
如果在构建 pyo3
时遇到错误,您可能需要检查它是否能找到您的 Python 以及任何相关的 Python 开发依赖项:[链接](https://pyo3.rs/v0.10.1/building_and_distribution.html)
旧版构建说明
针对特定 Python 版本的构建
这仅适用于通过 cargo
构建。 maturin
可能更可靠。
如果您正在针对特定的 Python 版本,或者您的 PATH 中没有 Python,您可以设置 PYTHON_SYS_EXECUTABLE
为您机器上该版本的 Python 可执行文件。
例如,在 Windows 的 Git Bash 中
PYTHON_SYS_EXECUTABLE=/c/my/path/to/python.exe cargo build --release
待办事项
通过 GitHub Pages 的实用 HTML
可以通过 GitHub Pages 提供此功能,以便新用户轻松测试他们的服务器使用情况... [链接](https://github.com/nickjbenson/quicksocket/blob/main/archive/examples/wip01_basic_websocket_client.html)
依赖项
~12–23MB
~338K SLoC