mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Create relays/relays structure in an atom, and update it with connections and subscribe status.
This commit is contained in:
parent
c42949ae2a
commit
5c696a9b53
7
spec/more_speech/nostr/relays_spec.clj
Normal file
7
spec/more_speech/nostr/relays_spec.clj
Normal file
@ -0,0 +1,7 @@
|
||||
(ns more-speech.nostr.relays-spec
|
||||
(:require [speclj.core :refer :all]
|
||||
[more-speech.nostr.relays :refer :all]))
|
||||
|
||||
(describe "The relays structure"
|
||||
|
||||
)
|
@ -1,26 +1,14 @@
|
||||
(ns more-speech.nostr.protocol
|
||||
(:require [clojure.data.json :as json]
|
||||
[clojure.core.async :as async]
|
||||
[more-speech.nostr.events :as events])
|
||||
[more-speech.nostr.events :as events]
|
||||
[more-speech.nostr.relays :refer [relays]])
|
||||
(:import (java.util Date)
|
||||
(java.text SimpleDateFormat)
|
||||
(java.net.http WebSocket HttpClient WebSocket$Listener)
|
||||
(java.net URI)
|
||||
))
|
||||
|
||||
(def relays ["wss://nostr-pub.wellorder.net" ;*
|
||||
;"wss://expensive-relay.fiatjaf.com"
|
||||
"wss://wlvs.space"
|
||||
"wss://nostr.rocks"
|
||||
;"wss://nostr-relay.herokuapp.com"
|
||||
"wss://freedom-relay.herokuapp.com/ws" ;*
|
||||
;"wss://nodestr-relay.dolu.dev/ws"
|
||||
;"wss://nostrrr.bublina.eu.org"
|
||||
;"wss://nostr-relay.freeberty.ne"
|
||||
"ws://nostr.rocks:7448" ;*
|
||||
"ws://nostr-pub.wellorder.net:7000"
|
||||
])
|
||||
|
||||
(defn send-to [^WebSocket conn msg]
|
||||
(let [msg (events/to-json msg)]
|
||||
(println "sending:" msg)
|
||||
@ -101,26 +89,34 @@
|
||||
(prn 'on-send-close-error (:reason e)))))
|
||||
|
||||
(defn get-events [event-agent]
|
||||
(let [connections (map #(connect-to-relay % event-agent) relays)
|
||||
connections (filter some? connections)
|
||||
id "more-speech"
|
||||
(doseq [url (keys @relays)]
|
||||
(let [connection (connect-to-relay url event-agent)]
|
||||
(swap! relays assoc-in [url :connection] connection)))
|
||||
(let [id "more-speech"
|
||||
date (make-date "04/20/2022")
|
||||
send-chan (:send-chan @event-agent)
|
||||
send-url (first (keys @relays))
|
||||
send-connection (get-in @relays [send-url :connection])
|
||||
]
|
||||
(prn date (format-time date))
|
||||
(doseq [conn connections]
|
||||
(unsubscribe conn id)
|
||||
(subscribe conn id date))
|
||||
(loop [msg (async/<!! send-chan)]
|
||||
(condp = (first msg)
|
||||
(doseq [url (keys @relays)]
|
||||
(let [conn (get-in @relays [url :connection])]
|
||||
(when (some? conn)
|
||||
(unsubscribe conn id)
|
||||
(subscribe conn id date))
|
||||
(swap! relays assoc-in [url :subscribed] true)))
|
||||
(loop [[type msg] (async/<!! send-chan)]
|
||||
(condp = type
|
||||
:closed nil
|
||||
:event
|
||||
(do
|
||||
(send-to (first connections) (second msg))
|
||||
(send-to send-connection msg)
|
||||
(recur (async/<!! send-chan)))))
|
||||
(doseq [conn connections]
|
||||
(close-connection conn id)
|
||||
)
|
||||
(doseq [url (keys @relays)]
|
||||
(let [conn (get-in @relays [url :connection])]
|
||||
(when (some? conn)
|
||||
(prn 'closing url)
|
||||
(close-connection conn id))))
|
||||
(Thread/sleep 100))
|
||||
(prn 'done)
|
||||
)
|
51
src/more_speech/nostr/relays.clj
Normal file
51
src/more_speech/nostr/relays.clj
Normal file
@ -0,0 +1,51 @@
|
||||
(ns more-speech.nostr.relays)
|
||||
|
||||
|
||||
(def old-relays ["wss://nostr-pub.wellorder.net"
|
||||
;"wss://expensive-relay.fiatjaf.com"
|
||||
"wss://wlvs.space"
|
||||
"wss://nostr.rocks"
|
||||
;"wss://nostr-relay.herokuapp.com"
|
||||
"wss://freedom-relay.herokuapp.com/ws"
|
||||
;"wss://nodestr-relay.dolu.dev/ws"
|
||||
;"wss://nostrrr.bublina.eu.org"
|
||||
;"wss://nostr-relay.freeberty.ne"
|
||||
"ws://nostr.rocks:7448"
|
||||
"ws://nostr-pub.wellorder.net:7000"
|
||||
])
|
||||
|
||||
|
||||
(def relays (atom {"wss://nostr-pub.wellorder.net"
|
||||
{:read true
|
||||
:write true
|
||||
:connection nil
|
||||
:subscribed false}
|
||||
"wss://wlvs.space"
|
||||
{:read true
|
||||
:write true
|
||||
:connection nil
|
||||
:subscribed false}
|
||||
"wss://nostr.rocks"
|
||||
{:read true
|
||||
:write true
|
||||
:connection nil
|
||||
:subscribed false}
|
||||
"wss://freedom-relay.herokuapp.com/ws"
|
||||
{:read true
|
||||
:write true
|
||||
:connection nil
|
||||
:subscribed false}
|
||||
"ws://nostr.rocks:7448"
|
||||
{:read true
|
||||
:write true
|
||||
:connection nil
|
||||
:subscribed false}
|
||||
"ws://nostr-pub.wellorder.net:7000"
|
||||
{:read true
|
||||
:write true
|
||||
:connection nil
|
||||
:subscribed false}
|
||||
}))
|
||||
|
||||
(defn set-connections [relays conn-status]
|
||||
(map #(assoc %1 :connected %2) relays conn-status))
|
@ -1,6 +1,6 @@
|
||||
(ns more-speech.ui.swing.relay-panel
|
||||
(:use [seesaw core])
|
||||
(:require [more-speech.nostr.protocol :as protocol]))
|
||||
(:require [more-speech.nostr.relays :refer [relays]]))
|
||||
|
||||
(defn make-relay-control-panel [relay]
|
||||
(let [read-check-box (checkbox :text "R")
|
||||
@ -13,6 +13,6 @@
|
||||
control-panel))
|
||||
|
||||
(defn make-relay-panel []
|
||||
(let [relay-control-panels (for [relay protocol/relays] (make-relay-control-panel relay))
|
||||
(let [relay-control-panels (for [url (keys @relays)] (make-relay-control-panel url))
|
||||
relay-panel (vertical-panel :items relay-control-panels)]
|
||||
relay-panel))
|
||||
|
Loading…
Reference in New Issue
Block a user