1 个不稳定版本
0.1.0 | 2022 年 7 月 24 日 |
---|
#266 in WebSocket
135KB
327 行
cmdpiped
cmdpiped
是一个将封装的 CLI 程序的标准 I/O 暴露给 WebSocket/SSE 的命令行工具
安装
可用的预编译二进制文件在发布页面。
对于 Rust 用户,您可以使用 cargo
cargo install cmdpiped
用法
USAGE:
cmdpiped [OPTIONS] --mode <MODE> [SUBCOMMAND]
OPTIONS:
-h, --host <HOST> Host address to bind [default: 127.0.0.1]
--help Print help information
-m, --mode <MODE> Mode to expose events [possible values: ws, sse]
-p, --port <PORT> Port to bind [default: 9000]
--path <PATH> Url path to setup [default: /events]
--serve <SERVE> Optional folder path to serve static files
-V, --version Print version information
您还可以使用管道
$ node ./index.js | cmdpiped -m sse
示例
一些基本示例
cmdpiped
是语言无关的,应该能够轻松地集成到任何可以在命令行上运行的程序中。
Python
from sys import stdout
from time import sleep
# Count to 100 sleeping every second
for count in range(0, 100):
print(count + 1)
stdout.flush()
sleep(1)
将文件保存为 counter.py
并运行 cmdpiped
$ cmdpiped -m sse python3 ./counter.py
Node.js
let count = 0;
setInterval(() => {
console.log(count++);
}, 1000);
将文件保存为 index.js
并运行 cmdpiped
$ cmdpiped -m sse node ./index.js
Bash
#!/bin/bash
# Count from 1 to 100 with a sleep of 1 second
for ((COUNT = 1; COUNT <= 100; COUNT++)); do
echo $COUNT
sleep 1
done
将文件保存为 script.sh
并运行 cmdpiped
$ chmod +x ./script.sh
$ cmdpiped -m sse ./script.sh
您应该能够得到
[2022-07-24T13:41:11Z TRACE actix_server::worker] Service "actix-web-service-127.0.0.1:9000" is available
[2022-07-24T13:41:11Z TRACE cmdpiped::broadcaster] Send: "data: 1\n\n"
[2022-07-24T13:41:11Z TRACE cmdpiped::broadcaster] Send: "data: 2\n\n"
[2022-07-24T13:41:12Z TRACE cmdpiped::broadcaster] Send: "data: 3\n\n"
[2022-07-24T13:41:13Z TRACE cmdpiped::broadcaster] Send: "data: 4\n\n"
...
高级示例
使用上述示例,我们可以添加一些前端代码
- 创建一个名为
static
的文件夹。 - 添加一个
index.html
文件
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var source = new EventSource("https://127.0.0.1:9000/events");
source.onmessage = function (event) {
var content = document.getElementById("content");
content.innerHTML = content.innerHTML + event.data + "<br/>";
};
</script>
</head>
<body>
<div id="content"></div>
</body>
</html>
运行 cmdpiped
暴露目录
$ cmdpiped -m sse --serve ./static
完整示例
完整示例可在 此处 获取
路线图
- SSE 流
- WebSocket 服务器 -> 客户端
- WebSocket 客户端 -> 服务器
版本控制
我们使用 SemVer 进行版本控制。有关可用的版本,请参阅 此存储库上的标签。
作者
- Njuguna Mureithi - 初始工作 - Njuguna Mureithi
有关参与此项目的其他 贡献者 的列表,请参阅。
许可
此项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件
依赖项
~19–32MB
~550K SLoC