Nip-11を実装しようとしたらwebsocketパッケージは使えないな。HTTPで接続してからWebSocketsにUpgradeするまでのあいだにHTTPでサーバの情報を送らなくちゃならないってことだと思うので。多分そういうことだと思う。 あと、よく考えたらWebSocketsじゃないHTTPクライアントから接続されたときに、何かしらの「まあまあちゃんとしたもの」を返すようにしておいたほうがいいのかもしれない。 となるとWebSocketを実装する他のパッケージを探すか、あるいは自分で書かなくちゃならない。
テスト
リレーサーバーの名前などをクライアントに提供するのがNIP-11なのだけど、思ったよりめんどくさくて、WebSocketはHTTPからUpgradeされるらしいのだけど、まだHTTPのうちにJSONファイルを送らなくちゃならなくて、今使ってる関数だと「HTTPのうちにデータを送信する」という機能がない。
Renderにuploadしたりとかそういうことって、「ちゃんとコードを書く」こととごっちゃになると腰が重くなるので、まずはws://localhost:10000を使ってるクライアントのリレーのリストに追加して、ローカルでちゃんと動くようにしてから、次にローカルのDockerイメージで動くようにして、それからRenderにアップしよう。
localhostリレーに対する書き込みのテストです。
wss://nostr-kyomu-haskell.onrender.com
ちょっとしたものにも名前を決めておくと、いろいろな段階で意志決定のコストを減らすことができる。 HaskellでNostrのRelayを作っていこうと思うのだけど、NostrのHaskellのRelayということでNoskellayにしようかと思う。で、実験的に作るので本番では大きく設計等が変わると思うので、stopgap(まにあわせ)をつけて、プロジェクト名はNoskellay Stopgapにしよう。で、ディレクトリ名やパッケージ名、Docker imageのタグなどにはnoskellay-stopgapを使おうと思う。
やっぶみーん
うにゅう、おはよう
ブラウザエンジンとかHTMLエンジンとかいうものが、一強になってしまうのは、HTMLというものが、はちゃめちゃだからなのだと思う。 HTTPはいいので、HTTPプロトコル上できちんと定義されたスクリプト言語で書かれたコードを送るようにしたらどうだろうか。