should subscribe correctly

This commit is contained in:
Richard Bondi
2021-02-19 09:22:01 -06:00
parent 0c0f9d0e76
commit bdc778314d
2 changed files with 12 additions and 12 deletions

14
pool.js
View File

@@ -15,7 +15,7 @@ export function relayPool(globalPrivateKey) {
const activeSubscriptions = {}
const sub = async (id, cb, filter) => {
const sub = async (id, {cb, filter}) => {
const subControllers = Object.fromEntries(
Object.values(relays)
.filter(({policy}) => policy.read)
@@ -53,11 +53,11 @@ export function relayPool(globalPrivateKey) {
setPrivateKey(privateKey) {
globalPrivateKey = privateKey
},
addRelay(url, policy = {read: true, write: true}) {
async addRelay(url, policy = {read: true, write: true}) {
let relayURL = normalizeRelayURL(url)
if (relayURL in relays) return
let relay = relayConnect(url, notice => {
let relay = await relayConnect(url, notice => {
propagateNotice(notice, relayURL)
})
relays[relayURL] = {relay, policy}
@@ -105,12 +105,12 @@ export function relayPool(globalPrivateKey) {
try {
await relay.publish(event)
statusCallback(0, relay.url)
let {unsub} = relay.sub(
() => {
let {unsub} = relay.sub({
cb: () => {
statusCallback(1, relay.url)
},
{id: event.id}
)
filter: {id: event.id}
})
setTimeout(unsub, 5000)
} catch (err) {
statusCallback(-1, relay.url)

View File

@@ -85,8 +85,7 @@ export function relayConnect(url, onNotice) {
} else {
console.warn(
'got event with invalid signature from ' + url,
event,
id
event
)
}
return
@@ -116,7 +115,8 @@ export function relayConnect(url, onNotice) {
}
}
const sub = async (channel, {cb, filter}) => {
const sub = async ({cb, filter}) => {
const channel = (await sha256(Math.random().toString())).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '')
trySend(['REQ', channel, filter])
channels[channel] = cb
@@ -128,9 +128,9 @@ export function relayConnect(url, onNotice) {
return {
url,
sub: sub.bind(null, await sha256(Math.random().toString())),
sub,
async publish(event) {
trySend(JSON.stringify(['EVENT', event]))
trySend(['EVENT', event])
},
close() {
ws.close()