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