mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Change channel to function in websocket-relay
This commit is contained in:
parent
358d90f683
commit
7587374a47
@ -9,14 +9,14 @@
|
|||||||
(it "can be made"
|
(it "can be made"
|
||||||
(should= {::relay/type ::ws-relay/websocket
|
(should= {::relay/type ::ws-relay/websocket
|
||||||
::ws-relay/url "url"
|
::ws-relay/url "url"
|
||||||
::ws-relay/chan :some-channel
|
::ws-relay/recv-f :some-f
|
||||||
::ws-relay/socket nil
|
::ws-relay/socket nil
|
||||||
::ws-relay/open? false}
|
::ws-relay/open? false}
|
||||||
(ws-relay/make "url" :some-channel)))
|
(ws-relay/make "url" :some-f)))
|
||||||
|
|
||||||
(it "can open and close"
|
(it "can open and close"
|
||||||
(pending "be nice to relay.damus.io")
|
(pending "be nice to relay.damus.io")
|
||||||
(let [relay (ws-relay/make "wss://relay.damus.io" :some-chan)
|
(let [relay (ws-relay/make "wss://relay.damus.io" :some-f)
|
||||||
relay-open (relay/open relay)
|
relay-open (relay/open relay)
|
||||||
relay-closed (relay/close relay-open)]
|
relay-closed (relay/close relay-open)]
|
||||||
(should (::ws-relay/open? relay-open))
|
(should (::ws-relay/open? relay-open))
|
||||||
@ -25,14 +25,13 @@
|
|||||||
(it "can send and receive"
|
(it "can send and receive"
|
||||||
(pending "be nice to relay.damus.io")
|
(pending "be nice to relay.damus.io")
|
||||||
(let [chan (async/chan)
|
(let [chan (async/chan)
|
||||||
relay (ws-relay/make "wss://relay.damus.io" chan)
|
recv-f (fn [msg] (async/>!! chan msg))
|
||||||
|
relay (ws-relay/make "wss://relay.damus.io" recv-f)
|
||||||
relay-open (relay/open relay)
|
relay-open (relay/open relay)
|
||||||
_ (relay/send relay-open ["test"])
|
_ (relay/send relay-open ["test"])
|
||||||
f-reply (future (async/<!! chan))
|
f-reply (future (async/<!! chan))
|
||||||
reply (deref f-reply 1000 :timeout)
|
reply (deref f-reply 1000 :timeout)
|
||||||
_ (relay/close relay-open)]
|
_ (relay/close relay-open)]
|
||||||
(should= [["NOTICE" "could not parse command"]
|
(should= ["NOTICE" "could not parse command"] reply)))
|
||||||
"wss://relay.damus.io"]
|
|
||||||
reply)))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
(def migration-level 9)
|
(def migration-level 9)
|
||||||
(def version "202212091526")
|
(def version "202212091526")
|
||||||
|
|
||||||
(def test-run? false)
|
(def test-run? true)
|
||||||
;---configuration files
|
;---configuration files
|
||||||
(def private-directory (atom "private"))
|
(def private-directory (atom "private"))
|
||||||
(def migration-filename (atom "private/migration"))
|
(def migration-filename (atom "private/migration"))
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
(ns more-speech.nostr.protocol
|
(ns more-speech.nostr.protocol
|
||||||
(:require [clojure.data.json :as json]
|
(:require [clojure.data.json :as json]
|
||||||
[clojure.core.async :as async]
|
[clojure.core.async :as async]
|
||||||
|
[clojure.stacktrace :as st]
|
||||||
|
[more-speech.relay :as relay]
|
||||||
|
[more-speech.websocket-relay :as ws-relay]
|
||||||
[more-speech.ui.swing.ui-context :refer :all]
|
[more-speech.ui.swing.ui-context :refer :all]
|
||||||
[more-speech.nostr.events :as events]
|
[more-speech.nostr.events :as events]
|
||||||
[more-speech.nostr.relays :refer [relays]]
|
[more-speech.nostr.relays :refer [relays]]
|
||||||
[more-speech.nostr.util :as util]
|
[more-speech.nostr.util :as util]
|
||||||
[more-speech.user-configuration :as user-configuration]
|
[more-speech.user-configuration :as user-configuration]
|
||||||
[clojure.stacktrace :as st]
|
|
||||||
[more-speech.config :as config])
|
[more-speech.config :as config])
|
||||||
(:import (java.util Date)
|
(:import (java.util Date)
|
||||||
(java.text SimpleDateFormat)
|
(java.text SimpleDateFormat)
|
||||||
@ -14,7 +16,6 @@
|
|||||||
(java.net URI)
|
(java.net URI)
|
||||||
(java.nio ByteBuffer)))
|
(java.nio ByteBuffer)))
|
||||||
|
|
||||||
|
|
||||||
(defn send-to [^WebSocket conn msg]
|
(defn send-to [^WebSocket conn msg]
|
||||||
(try
|
(try
|
||||||
(let [msg (events/to-json msg)]
|
(let [msg (events/to-json msg)]
|
||||||
@ -162,8 +163,8 @@
|
|||||||
|
|
||||||
(defn connect-to-relays []
|
(defn connect-to-relays []
|
||||||
(doseq [url (keys @relays)]
|
(doseq [url (keys @relays)]
|
||||||
(let [relay (get @relays url)
|
(let [relay-config (get @relays url)
|
||||||
should-connect? (or (:read relay) (:write relay))
|
should-connect? (or (:read relay-config) (:write relay-config))
|
||||||
connection (if should-connect?
|
connection (if should-connect?
|
||||||
(connect-to-relay url)
|
(connect-to-relay url)
|
||||||
nil)]
|
nil)]
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
(ns more-speech.websocket-relay
|
(ns more-speech.websocket-relay
|
||||||
(:require [more-speech
|
(:require [more-speech
|
||||||
[relay :as relay]]
|
[relay :as relay]]
|
||||||
[clojure.core.async :as async]
|
|
||||||
[clojure.data.json :as json])
|
[clojure.data.json :as json])
|
||||||
(:import (java.net.http HttpClient WebSocket$Listener WebSocket)
|
(:import (java.net.http HttpClient WebSocket$Listener WebSocket)
|
||||||
(java.net URI)))
|
(java.net URI)))
|
||||||
@ -9,21 +8,20 @@
|
|||||||
(defn to-json [o]
|
(defn to-json [o]
|
||||||
(json/write-str o :escape-slash false :escape-unicode false))
|
(json/write-str o :escape-slash false :escape-unicode false))
|
||||||
|
|
||||||
(defn make [url relay-channel]
|
(defn make [url recv-f]
|
||||||
{::relay/type ::websocket
|
{::relay/type ::websocket
|
||||||
::url url
|
::url url
|
||||||
::chan relay-channel
|
::recv-f recv-f
|
||||||
::socket nil
|
::socket nil
|
||||||
::open? false})
|
::open? false})
|
||||||
|
|
||||||
(defn handle-text [{:keys [buffer relay]} data last]
|
(defn handle-text [{:keys [buffer relay]} data last]
|
||||||
(let [{::keys [url chan]} relay]
|
(let [{::keys [url recv-f]} relay]
|
||||||
(.append buffer (.toString data))
|
(.append buffer (.toString data))
|
||||||
(when last
|
(when last
|
||||||
(try
|
(try
|
||||||
(let [envelope (json/read-str (.toString buffer))]
|
(let [envelope (json/read-str (.toString buffer))]
|
||||||
(async/>!! chan [envelope url])
|
(recv-f envelope))
|
||||||
)
|
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(prn 'onText url (.getMessage e))
|
(prn 'onText url (.getMessage e))
|
||||||
(prn (.toString buffer))))
|
(prn (.toString buffer))))
|
||||||
|
Loading…
Reference in New Issue
Block a user