diff options
| author | polwex <polwex@sortug.com> | 2025-10-31 22:59:42 +0700 |
|---|---|---|
| committer | polwex <polwex@sortug.com> | 2025-10-31 22:59:42 +0700 |
| commit | f019da2e338733dd88d3a8efe60f260d74b9a7ad (patch) | |
| tree | ecccfab6926dd89c3ec0597653cca6e30c62dc41 /app/lib | |
| parent | 54fb3abb81621bd2a5fafbdd9b96a8be8464878e (diff) | |
fixes to iris request flow with threads
Diffstat (limited to 'app/lib')
| -rw-r--r-- | app/lib/nostr/client.hoon | 20 | ||||
| -rw-r--r-- | app/lib/nostr/req.hoon | 4 | ||||
| -rw-r--r-- | app/lib/nostrill.hoon | 4 | ||||
| -rw-r--r-- | app/lib/websockets.hoon | 29 |
4 files changed, 47 insertions, 10 deletions
diff --git a/app/lib/nostr/client.hoon b/app/lib/nostr/client.hoon index 908b360..41c3080 100644 --- a/app/lib/nostr/client.hoon +++ b/app/lib/nostr/client.hoon @@ -1,5 +1,5 @@ /- sur=nostrill, nsur=nostr -/+ js=json-nostr, sr=sortug, nostr-keys, constants, server +/+ js=json-nostr, sr=sortug, nostr-keys, constants, server, ws=websockets /= web /web/router |_ [=state:sur =bowl:gall] @@ -88,14 +88,30 @@ =/ =filter:nsur [~ ~ `kinds `tags ~ ~ ~] (send-req ~[filter]) -:: TODO URGENT +:: +++ test-connection + |= relay-url=@t + =/ kinds (silt ~[1]) + =/ since (sub now.bowl ~h1) + =/ =filter:nsur [~ ~ `kinds ~ `since ~ ~] + =/ sub-id (gen-sub-id:nostr-keys eny.bowl) + =/ req=client-msg:nsur [%req sub-id ~[filter]] + :- :~ (send relay-url req) == state + ++ send |= [relay-url=@t req=client-msg:nsur] ^- card:agent:gall + ~& >>> send=relay-url =/ req-body=json (req:en:js req) =/ octs (json-to-octs:server req-body) =/ wev=websocket-event:eyre [%message 1 `octs] + =/ conn (check-connected:ws relay-url bowl) + ~& >>> send-client-conn=conn + ?~ conn :: if no ws connection we start a thread which will connect first, then send the message =/ pat /to-nostr-relay [%pass (weld /ws pat) %arvo %k %fard dap.bowl %ws %noun !>([relay-url wev])] + :: + (give-ws-payload-client:ws id.u.conn [1 `octs]) + :: ++ send-http :: |= req=http-req:shim:nsur diff --git a/app/lib/nostr/req.hoon b/app/lib/nostr/req.hoon index e53159c..89cd262 100644 --- a/app/lib/nostr/req.hoon +++ b/app/lib/nostr/req.hoon @@ -14,5 +14,7 @@ =/ jon (relay-msg:en:js msg) =/ octs (json-to-octs:server jon) =/ res-event=websocket-event:eyre [%message 1 `octs] - (give-ws-payload:ws wid res-event) + :~ + (give-ws-payload-server:ws wid res-event) + == -- diff --git a/app/lib/nostrill.hoon b/app/lib/nostrill.hoon index b9d8f88..d46d090 100644 --- a/app/lib/nostrill.hoon +++ b/app/lib/nostrill.hoon @@ -34,7 +34,9 @@ =/ resmsg (cat 3 msg (cat 3 msg msg)) =/ octs (as-octs:mimes:html resmsg) =/ res-event=websocket-event:eyre [%message 1 `octs] - (give-ws-payload:ws wid res-event) + :~ (give-ws-payload-server:ws wid res-event) + == + :: ++ cards diff --git a/app/lib/websockets.hoon b/app/lib/websockets.hoon index 4d1f952..98ea25b 100644 --- a/app/lib/websockets.hoon +++ b/app/lib/websockets.hoon @@ -1,17 +1,34 @@ |% - ++ give-ws-payload + ++ give-ws-payload-client + |= [wid=@ msg=websocket-message:eyre] + ^- card:agent:gall + =/ =cage + [%message !>(msg)] + =/ wsid (scot %ud wid) + [%give %fact ~[/websocket-client/[wsid]] cage] + + ++ give-ws-payload-server |= [wid=@ event=websocket-event:eyre] - ^- (list card:agent:gall) + ^- card:agent:gall =/ =cage [%websocket-response !>([wid event])] =/ wsid (scot %ud wid) - :~ [%give %fact ~[/websocket-server/[wsid]] cage] - == + [%give %fact ~[/websocket-server/[wsid]] cage] + ++ accept-handshake |= wid=@ =/ response [%accept ~] - (give-ws-payload wid response) + :~ + (give-ws-payload-server wid response) + == ++ refuse-handshake |= wid=@ =/ response [%reject ~] - (give-ws-payload wid response) + :~ + (give-ws-payload-server wid response) + == + ++ check-connected + |= [url=@t =bowl:gall] ^- (unit websocket-connection:iris) + =/ scry-path=path /(scot %p our.bowl)/ws/(scot %da now.bowl)/url/[url] + =/ conn .^((unit websocket-connection:iris) %ix scry-path) + conn -- |
