#nostr #websocket-client #cli #nostr-protocol

bin+lib nostcat

Nostr 中继脚本的 WebSocket 客户端

5 个版本

0.3.3 2022 年 12 月 10 日
0.3.2 2022 年 12 月 6 日
0.3.1 2022 年 12 月 2 日
0.3.0 2022 年 11 月 18 日
0.2.0 2022 年 11 月 18 日

#241 in WebSocket

每月 31 次下载

自定义许可证

14KB
241

nostcat

Crates.io Crates.io Crates.io

Nostr 中继脚本的 WebSocket 客户端

示例

使用交互式输入

$ nostcat wss://relay.damus.io <return>
["REQ", "RAND", {"kinds": [1], "limit": 8}] <return>
<ctrl-D>

使用 stdin(支持多行命令)

$ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' |
  nostcat wss://relay.damus.io

$ cat commands.txt
["REQ", "RAND", {"kinds": [1], "limit": 2}]
["REQ", "RAND2", {"kinds": [2], "limit": 2}]

$ cat commands.txt | nostcat wss://relay.damus.io

使用 jq 查询 Nostr JSON 事件并选择事件 JSON

$ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' |
  nostcat wss://relay.damus.io |
  jq '.[2]'

$ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' |
  nostcat wss://relay.damus.io |
  jq '.[2].content'

随着事件的到来提供唯一(去重)结果(注意:不再应用排序事件 - FIFO)

$ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' |
  nostcat --unique wss://relay.damus.io wss://nostr.ono.re

WebSocket 连接超时(毫秒)

$ echo '["REQ", "RAND", {"kinds": [1], "limit": 2}]' |
  nostcat --connect-timeout 250 wss://relay.damus.io

流式传输 WebSocket 数据(类似于 tail -f)

$ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' |
  nostcat --stream wss://relay.damus.io

输出信息日志消息,可协助调试

$ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' |
  RUST_LOG=info nostcat wss://relay.damus.io

从一台服务器将事件管道传输到另一台服务器(目前每次限制为 1 个事件)

$ echo '["REQ", "CID", {"limit": 1}]' |
  nostcat wss://relay.damus.io |
  jq -c 'del(.[1])' |
  nostcat wss://nostr.ono.re

从一台服务器将事件管道传输到另一台服务器(对于多个事件,完成时按 ctrl-C

$ echo '["REQ", "CID", {"limit": 3}]' |
  nostcat wss://relay.damus.io |
  jq -c 'del(.[1])' |
  nostcat --stream wss://nostr.ono.re
  <ctrl-C>

入门指南

使用 Cargo 安装(需要 ~/.cargo/bin 在 PATH 中)

$ cargo install nostcat

从源代码构建(可能不稳定)

$ git clone https://github.com/blakejakopovic/nostcat
$ cargo build --release

依赖项

~9–21MB
~320K SLoC