Open3
Nostrについて調べたこと
GolangでNostrを扱うことができるパッケージであるgo-nostr
について調べた。
- リレーに接続するためのWebsocketのコネクションはどのタイミングで切断されるか?
nostr.RelayConnect(ctx, "wss://relay-jp.nostr.wirednet.jp")
のように、引数にcontext.Context
型のctx
を持つので、このctx
がcancel()
されるとリレーからコネクションが切断される。
- subscribeすると継続的にデータが来るが、これはどのタイミングで切断されるか?
これも同様に
relay.Subscribe(ctx, filters)
のctx
がcancel()
になったタイミングでunsubされる。
NIP-01を見ると、subscribeを停止したいときは["CLOSE", 購読ID]
をリレーサーバーに送ることによって停止されるとのこと。
つまり
relay.Subscribe(ctx, filters)
は、ctx
が終了したタイミングでリレーサーバーに["CLOSE", 購読ID]
を送るため読み取りを中断できる。
リレーとのコネクションを切るわけではなく、特定のIDのsubscribeを停止しているだけとなる。
画像投稿について
画像を投稿している人たちのイベントjson見るとパターンが少し違うものがある。
{
"content": "xxxxxxx https://image.nostr.build/bf5bee557bd72322c50d2d42402afefcc7250611c6c9bd23b840b2c55fb6635c.jpg ",
"created_at": 1700756927,
"id": "7bd398957d1ef9de48d1b90121176feb31e7a7b124bb8a280d14982fd0925353",
"kind": 1,
"pubkey": "c909252de5546401e9717846a27d3aec0beef9bd8360bcd7cf5480252dd6776d",
"sig": "770875d6bcaae1afedffd9dbebc4e2f6f41a32ac434a9899450c05c1a4a4962ee157198722c4bde65d2429e52c7e65eb7e5e1ce28a1d1bee0a1ca501614a59aa",
"tags": [
[
"imeta",
"url https://image.nostr.build/bf5bee557bd72322c50d2d42402afefcc7250611c6c9bd23b840b2c55fb6635c.jpg",
"blurhash eJHUd~=|00%2xt_NSx$*xGIoX-NZE2S#tQJ,nNVY%2xaR5nOS5NGRP",
"dim 4032x3024"
],
[
"r",
"https://image.nostr.build/bf5bee557bd72322c50d2d42402afefcc7250611c6c9bd23b840b2c55fb6635c.jpg"
]
]
}
もう一つ
{
"pubkey": "64057544a03d7f8d24658008cdd9282ec8a2af93b2744873f92529aecc5ade4b",
"content": "そういえば生協でおやき買いました\n来週届きます https://image.nostr.build/f8ac733d1f6b9b1ddf0641b68ccdf6ee7362a990fd79c5065dbafd95a0a47bd5.jpg",
"id": "7d4579e18026e1d5c6ecf3b735f98184df476599470476fb6b76a50a724d853e",
"created_at": 1700756745,
"sig": "d04ceb657a1584c0fd821f73bebedc78bfd4496fb2d21ef743baadf0f4174f6905c8017cbd4e45c2871ba9b0fb1f5e56ec722bc0798e19059774e98b0182d1d3",
"kind": 1,
"tags": [
[
"r",
"https://image.nostr.build/f8ac733d1f6b9b1ddf0641b68ccdf6ee7362a990fd79c5065dbafd95a0a47bd5.jpg"
]
]
}
- rタグを付けているもの
- rタグとimetaタグを付けているもの
があった
過去の実装の差について調べる