summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/app/nostrill.hoon16
-rw-r--r--app/lib/json/nostr.hoon2
-rw-r--r--app/lib/nostr/client.hoon12
-rw-r--r--app/lib/websockets.hoon12
-rw-r--r--app/ted/ws.hoon34
5 files changed, 51 insertions, 25 deletions
diff --git a/app/app/nostrill.hoon b/app/app/nostrill.hoon
index 9b3b974..15a20a3 100644
--- a/app/app/nostrill.hoon
+++ b/app/app/nostrill.hoon
@@ -60,21 +60,30 @@
handle-comms
%json on-ui
%handle-http-request handle-shim
+ %websocket-thread handle-ws-thread
%websocket-client-message handle-relay-ws
%websocket-handshake handle-ws-handshake
%websocket-server-message handle-ws-msg
==
+$ ws-msg [@ud websocket-message:eyre]
+ ++ handle-ws-thread
+ ~& >> "proxying ws thread"
+ =/ msg !<(ws-msg vase)
+ :_ this
+ ~& "giving payload"
+ :~ (give-ws-payload-client:ws msg)
+ ==
++ handle-relay-ws
^- (quip card:agent:gall agent:gall)
=/ msg !<(ws-msg vase)
- ~& handle-relay-ws=msg
+ ~& handle-relay-ws=-.msg
=/ m=websocket-message:eyre +.msg
?~ message.m `this
=/ =octs u.message.m
=/ urelay-msg (parse-body:nclient q.octs)
?~ urelay-msg `this
- =/ relay-url '' :: TODO IMPORTANT!! where to keep this
+ ~& >> urelay-msg
+ =/ relay-url (get-url:ws -.msg bowl)
=^ cards state (handle-ws:mutan relay-url u.urelay-msg)
[cards this]
++ handle-ws-handshake
@@ -232,7 +241,8 @@
:~ [%pass /iris-test %arvo %i task]
==
%wsted
- =/ relay-url 'ws://localhost:8888'
+ :: =/ relay-url 'ws://localhost:8888'
+ =/ relay-url 'wss://nos.lol'
=^ cs state (test-connection:nclient relay-url)
[cs this]
%irisf
diff --git a/app/lib/json/nostr.hoon b/app/lib/json/nostr.hoon
index 887e0d8..cd7e95f 100644
--- a/app/lib/json/nostr.hoon
+++ b/app/lib/json/nostr.hoon
@@ -121,7 +121,7 @@
=/ second i.t.p.jon
?. ?=(%s -.head) ~
:: TODO make sure they're always caps
- ~& dejson=[p.head second]
+ ~& dejson=[p.head subid=second]
?+ p.head ~
%'EVENT'
=/ d (so second) ?~ d ~
diff --git a/app/lib/nostr/client.hoon b/app/lib/nostr/client.hoon
index 41c3080..2438a47 100644
--- a/app/lib/nostr/client.hoon
+++ b/app/lib/nostr/client.hoon
@@ -48,9 +48,9 @@
++ get-posts
^- (quip card _state)
=/ kinds (silt ~[1])
- =/ last-week (sub now.bowl ~d7)
+ =/ since (sub now.bowl ~m1)
:: =/ since (to-unix-secs:jikan:sr last-week)
- =/ =filter:nsur [~ ~ `kinds ~ `last-week ~ ~]
+ =/ =filter:nsur [~ ~ `kinds ~ `since ~ ~]
(send-req ~[filter])
++ get-user-feed
@@ -92,7 +92,7 @@
++ test-connection
|= relay-url=@t
=/ kinds (silt ~[1])
- =/ since (sub now.bowl ~h1)
+ =/ since (sub now.bowl ~m1)
=/ =filter:nsur [~ ~ `kinds ~ `since ~ ~]
=/ sub-id (gen-sub-id:nostr-keys eny.bowl)
=/ req=client-msg:nsur [%req sub-id ~[filter]]
@@ -103,14 +103,14 @@
~& >>> send=relay-url
=/ req-body=json (req:en:js req)
=/ octs (json-to-octs:server req-body)
- =/ wev=websocket-event:eyre [%message 1 `octs]
+ =/ wmsg=websocket-message:eyre [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])]
+ [%pass (weld /ws pat) %arvo %k %fard dap.bowl %ws %noun !>([relay-url wmsg])]
::
- (give-ws-payload-client:ws id.u.conn [1 `octs])
+ (give-ws-payload-client:ws id.u.conn wmsg)
:: ++ send-http
diff --git a/app/lib/websockets.hoon b/app/lib/websockets.hoon
index 98ea25b..8e6d45c 100644
--- a/app/lib/websockets.hoon
+++ b/app/lib/websockets.hoon
@@ -6,6 +6,13 @@
[%message !>(msg)]
=/ wsid (scot %ud wid)
[%give %fact ~[/websocket-client/[wsid]] cage]
+ ++ close-ws-client
+ |= wid=@
+ ^- card:agent:gall
+ =/ =cage
+ [%disconnect !>(~)]
+ =/ wsid (scot %ud wid)
+ [%give %fact ~[/websocket-client/[wsid]] cage]
++ give-ws-payload-server
|= [wid=@ event=websocket-event:eyre]
@@ -26,6 +33,11 @@
(give-ws-payload-server wid response)
==
+ ++ get-url
+ |= [wid=@ud =bowl:gall] ^- @t
+ =/ scry-path=path /(scot %p our.bowl)/ws/(scot %da now.bowl)/id/(scot %ud wid)
+ =/ conn .^(websocket-connection:iris %ix scry-path)
+ url.conn
++ check-connected
|= [url=@t =bowl:gall] ^- (unit websocket-connection:iris)
=/ scry-path=path /(scot %p our.bowl)/ws/(scot %da now.bowl)/url/[url]
diff --git a/app/ted/ws.hoon b/app/ted/ws.hoon
index ebb7926..9f9c298 100644
--- a/app/ted/ws.hoon
+++ b/app/ted/ws.hoon
@@ -6,9 +6,9 @@
=/ m (strand ,vase)
^- form:m
:: =/ [url=@t req=client-msg:nsur] (need !<((unit [@t client-msg:nsur]) arg))
-=/ [url=@t wev=websocket-event:eyre] !<([@t websocket-event:eyre] arg)
+=/ [url=@t wmsg=websocket-message:eyre] !<([@t websocket-message:eyre] arg)
~& > url=url
-~& > req=wev
+~& > req=wmsg
;< =bowl:spider bind:m get-bowl:strandio
=/ desk q.byk.bowl
=/ =task:iris [%websocket-connect desk url]
@@ -19,25 +19,29 @@
:: confirm connection was established
?. ?=([%iris %websocket-response id=@ud websocket-event:eyre] q.res)
(strand-fail:strand %bad-sign ~)
-~& > ted-ws-res=+>.q.res
+~& > ted-ws-res=+>+<.q.res
?. ?=(%accept +>+<.q.res)
(pure:m !>([%ng '']))
:: (strand-fail:strand %bad-sign ~)
-:: :: ~& ws-handshake=[id.q.res url.q.res]
-:: TODO this might fail if the subscription is not set yet
+~& "ws connection accepted, sending ws msg"
~& >>> "sleeping"
;< ~ bind:m (sleep:strandio ~s3)
~& >>> "slept"
-
-=/ subwire=path /websocket-server/(scot %ud id.q.res)
-=/ =cage [%websocket-response !>(+>.q.res)]
-=/ gf=gift:agent:gall [%fact :~(subwire) cage]
-=/ =card:agent:gall [%give gf]
-~& >> ws-ted-ok-sending-msg=id.q.res
-;< ~ bind:m (send-raw-card:strandio card)
+=/ card2=card:agent:gall
+ [%pass /ws/proxy %agent [our.bowl desk] %poke %websocket-thread !>([id.q.res wmsg])]
+;< ~ bind:m (send-raw-card:strandio card2)
;< res2=(pair wire sign-arvo) bind:m take-sign-arvo:strandio
-?. ?=([%iris %websocket-response id=@ud %message wm=websocket-message:eyre] q.res2)
- (strand-fail:strand %bad-sign ~)
-=/ wm=websocket-message:eyre +>+>.q.res2
+
+
+:: =/ subwire=path /websocket-server/(scot %ud id.q.res)
+:: =/ =cage [%websocket-response !>(+>.q.res)]
+:: =/ gf=gift:agent:gall [%fact :~(subwire) cage]
+:: =/ =card:agent:gall [%give gf]
+:: ~& >> ws-ted-ok-sending-msg=id.q.res
+:: ;< ~ bind:m (send-raw-card:strandio card)
+:: ;< res2=(pair wire sign-arvo) bind:m take-sign-arvo:strandio
+:: ?. ?=([%iris %websocket-response id=@ud %message wm=websocket-message:eyre] q.res2)
+:: (strand-fail:strand %bad-sign ~)
+:: =/ wm=websocket-message:eyre +>+>.q.res2
(pure:m !>([%ok id.q.res]))