@livestore/webmesh 0.3.0-dev.37 → 0.3.0-dev.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -3
- package/dist/.tsbuildinfo +1 -1
- package/dist/channel/{message-channel-internal.d.ts → direct-channel-internal.d.ts} +7 -7
- package/dist/channel/direct-channel-internal.d.ts.map +1 -0
- package/dist/channel/{message-channel-internal.js → direct-channel-internal.js} +22 -22
- package/dist/channel/direct-channel-internal.js.map +1 -0
- package/dist/channel/{message-channel.d.ts → direct-channel.d.ts} +3 -3
- package/dist/channel/direct-channel.d.ts.map +1 -0
- package/dist/channel/{message-channel.js → direct-channel.js} +17 -17
- package/dist/channel/direct-channel.js.map +1 -0
- package/dist/channel/proxy-channel.d.ts.map +1 -1
- package/dist/channel/proxy-channel.js +84 -21
- package/dist/channel/proxy-channel.js.map +1 -1
- package/dist/common.d.ts +11 -5
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +6 -1
- package/dist/common.js.map +1 -1
- package/dist/mesh-schema.d.ts +15 -15
- package/dist/mesh-schema.d.ts.map +1 -1
- package/dist/mesh-schema.js +9 -9
- package/dist/mesh-schema.js.map +1 -1
- package/dist/node.d.ts +10 -5
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +68 -30
- package/dist/node.js.map +1 -1
- package/dist/node.test.js +114 -17
- package/dist/node.test.js.map +1 -1
- package/dist/websocket-edge.d.ts +2 -1
- package/dist/websocket-edge.d.ts.map +1 -1
- package/dist/websocket-edge.js +6 -2
- package/dist/websocket-edge.js.map +1 -1
- package/package.json +3 -4
- package/src/channel/{message-channel-internal.ts → direct-channel-internal.ts} +29 -29
- package/src/channel/{message-channel.ts → direct-channel.ts} +20 -20
- package/src/channel/proxy-channel.ts +107 -25
- package/src/common.ts +12 -4
- package/src/mesh-schema.ts +16 -19
- package/src/node.test.ts +185 -17
- package/src/node.ts +97 -35
- package/src/websocket-edge.ts +7 -1
- package/dist/channel/message-channel-internal.d.ts.map +0 -1
- package/dist/channel/message-channel-internal.js.map +0 -1
- package/dist/channel/message-channel.d.ts.map +0 -1
- package/dist/channel/message-channel.js.map +0 -1
package/src/node.ts
CHANGED
|
@@ -15,9 +15,9 @@ import {
|
|
|
15
15
|
WebChannel,
|
|
16
16
|
} from '@livestore/utils/effect'
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { makeDirectChannel } from './channel/direct-channel.js'
|
|
19
19
|
import { makeProxyChannel } from './channel/proxy-channel.js'
|
|
20
|
-
import type { ChannelKey, MeshNodeName, MessageQueueItem, ProxyQueueItem } from './common.js'
|
|
20
|
+
import type { ChannelKey, ListenForChannelResult, MeshNodeName, MessageQueueItem, ProxyQueueItem } from './common.js'
|
|
21
21
|
import { EdgeAlreadyExistsError, packetAsOtelAttributes } from './common.js'
|
|
22
22
|
import * as WebmeshSchema from './mesh-schema.js'
|
|
23
23
|
import { TimeoutSet } from './utils.js'
|
|
@@ -63,8 +63,16 @@ export interface MeshNode<TName extends MeshNodeName = MeshNodeName> {
|
|
|
63
63
|
|
|
64
64
|
removeEdge: (targetNodeName: MeshNodeName) => Effect.Effect<void, Cause.NoSuchElementException>
|
|
65
65
|
|
|
66
|
+
hasChannel: ({
|
|
67
|
+
target,
|
|
68
|
+
channelName,
|
|
69
|
+
}: {
|
|
70
|
+
target: MeshNodeName
|
|
71
|
+
channelName: string
|
|
72
|
+
}) => Effect.Effect<boolean, never, Scope.Scope>
|
|
73
|
+
|
|
66
74
|
/**
|
|
67
|
-
* Tries to broker a
|
|
75
|
+
* Tries to broker a DirectChannel edge between the nodes, otherwise will proxy messages via hop-nodes
|
|
68
76
|
*
|
|
69
77
|
* For a channel to successfully open, both sides need to have a edge and call `makeChannel`.
|
|
70
78
|
*
|
|
@@ -91,9 +99,9 @@ export interface MeshNode<TName extends MeshNodeName = MeshNodeName> {
|
|
|
91
99
|
send: Schema.Schema<MsgSend, any>
|
|
92
100
|
}
|
|
93
101
|
/**
|
|
94
|
-
* If possible, prefer using a
|
|
102
|
+
* If possible, prefer using a DirectChannel with transferables (i.e. transferring memory instead of copying it).
|
|
95
103
|
*/
|
|
96
|
-
mode: '
|
|
104
|
+
mode: 'direct' | 'proxy'
|
|
97
105
|
/**
|
|
98
106
|
* Amount of time before we consider a channel creation failed and retry when a new edge is available
|
|
99
107
|
*
|
|
@@ -102,6 +110,8 @@ export interface MeshNode<TName extends MeshNodeName = MeshNodeName> {
|
|
|
102
110
|
timeout?: Duration.DurationInput
|
|
103
111
|
}) => Effect.Effect<WebChannel.WebChannel<MsgListen, MsgSend>, never, Scope.Scope>
|
|
104
112
|
|
|
113
|
+
listenForChannel: Stream.Stream<ListenForChannelResult>
|
|
114
|
+
|
|
105
115
|
/**
|
|
106
116
|
* Creates a WebChannel that is broadcasted to all connected nodes.
|
|
107
117
|
* Messages won't be buffered for nodes that join the network after the broadcast channel has been created.
|
|
@@ -142,22 +152,26 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
142
152
|
}
|
|
143
153
|
>()
|
|
144
154
|
|
|
155
|
+
const channelRequestsQueue = yield* Queue.unbounded<ListenForChannelResult>().pipe(
|
|
156
|
+
Effect.acquireRelease(Queue.shutdown),
|
|
157
|
+
)
|
|
158
|
+
|
|
145
159
|
type RequestId = string
|
|
146
160
|
const topologyRequestsMap = new Map<RequestId, Map<MeshNodeName, Set<MeshNodeName>>>()
|
|
147
161
|
|
|
148
162
|
type BroadcastChannelName = string
|
|
149
163
|
const broadcastChannelListenQueueMap = new Map<BroadcastChannelName, Queue.Queue<any>>()
|
|
150
164
|
|
|
151
|
-
const checkTransferableEdges = (packet: typeof WebmeshSchema.
|
|
165
|
+
const checkTransferableEdges = (packet: typeof WebmeshSchema.DirectChannelPacket.Type) => {
|
|
152
166
|
if (
|
|
153
|
-
(packet._tag === '
|
|
167
|
+
(packet._tag === 'DirectChannelRequest' &&
|
|
154
168
|
(edgeChannels.size === 0 ||
|
|
155
169
|
// Either if direct edge does not support transferables ...
|
|
156
170
|
edgeChannels.get(packet.target)?.channel.supportsTransferables === false)) ||
|
|
157
171
|
// ... or if no forward-edges support transferables
|
|
158
172
|
![...edgeChannels.values()].some((c) => c.channel.supportsTransferables === true)
|
|
159
173
|
) {
|
|
160
|
-
return WebmeshSchema.
|
|
174
|
+
return WebmeshSchema.DirectChannelResponseNoTransferables.make({
|
|
161
175
|
reqId: packet.id,
|
|
162
176
|
channelName: packet.channelName,
|
|
163
177
|
// NOTE for now we're "pretending" that the message is coming from the target node
|
|
@@ -274,6 +288,7 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
274
288
|
if (edgeChannels.has(packet.target)) {
|
|
275
289
|
const edgeChannel = edgeChannels.get(packet.target)!.channel
|
|
276
290
|
const hops = packet.source === nodeName ? [] : [...packet.hops, nodeName]
|
|
291
|
+
yield* Effect.annotateCurrentSpan({ hasDirectEdge: true })
|
|
277
292
|
yield* edgeChannel.send({ ...packet, hops })
|
|
278
293
|
}
|
|
279
294
|
// In this case we have an expected route back we should follow
|
|
@@ -304,18 +319,22 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
304
319
|
// Optimization: filter out edge where packet just came from
|
|
305
320
|
const edgesToForwardTo = Array.from(edgeChannels)
|
|
306
321
|
.filter(([name]) => name !== packet.source)
|
|
307
|
-
.map(([
|
|
322
|
+
.map(([name, con]) => ({ name, channel: con.channel }))
|
|
308
323
|
|
|
309
324
|
// TODO if hops-depth=0, we should fail right away with no route found
|
|
310
325
|
if (hops.length === 0 && edgesToForwardTo.length === 0 && LS_DEV) {
|
|
311
|
-
|
|
326
|
+
yield* Effect.logWarning(nodeName, 'no route found to', packet.target, packet._tag, 'TODO handle better')
|
|
312
327
|
// TODO return a expected failure
|
|
313
328
|
}
|
|
314
329
|
|
|
315
330
|
const packetToSend = { ...packet, hops }
|
|
316
331
|
// console.debug(nodeName, 'sendPacket:forwarding', packetToSend)
|
|
317
332
|
|
|
318
|
-
yield* Effect.
|
|
333
|
+
yield* Effect.annotateCurrentSpan({ edgesToForwardTo: edgesToForwardTo.map(({ name }) => name) })
|
|
334
|
+
|
|
335
|
+
yield* Effect.forEach(edgesToForwardTo, ({ channel }) => channel.send(packetToSend), {
|
|
336
|
+
concurrency: 'unbounded',
|
|
337
|
+
})
|
|
319
338
|
}
|
|
320
339
|
}).pipe(
|
|
321
340
|
Effect.withSpan(`sendPacket:${packet._tag}:${packet.source}→${packet.target}`, {
|
|
@@ -341,7 +360,7 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
341
360
|
Effect.gen(function* () {
|
|
342
361
|
const packet = yield* Schema.decodeUnknown(WebmeshSchema.Packet)(message)
|
|
343
362
|
|
|
344
|
-
// console.debug(nodeName, '
|
|
363
|
+
// console.debug(nodeName, 'recv', packet._tag, packet.source, packet.target)
|
|
345
364
|
|
|
346
365
|
if (handledPacketIds.has(packet.id)) return
|
|
347
366
|
handledPacketIds.add(packet.id)
|
|
@@ -359,13 +378,13 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
359
378
|
const channelKey = `target:${packet.source}, channelName:${packet.channelName}` satisfies ChannelKey
|
|
360
379
|
|
|
361
380
|
if (!channelMap.has(channelKey)) {
|
|
362
|
-
const
|
|
381
|
+
const channelQueue = yield* Queue.unbounded<MessageQueueItem | ProxyQueueItem>().pipe(
|
|
363
382
|
Effect.acquireRelease(Queue.shutdown),
|
|
364
383
|
)
|
|
365
|
-
channelMap.set(channelKey, { queue, debugInfo: undefined })
|
|
384
|
+
channelMap.set(channelKey, { queue: channelQueue, debugInfo: undefined })
|
|
366
385
|
}
|
|
367
386
|
|
|
368
|
-
const
|
|
387
|
+
const channelQueue = channelMap.get(channelKey)!.queue
|
|
369
388
|
|
|
370
389
|
const respondToSender = (outgoingPacket: typeof WebmeshSchema.Packet.Type) =>
|
|
371
390
|
edgeChannel
|
|
@@ -379,12 +398,20 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
379
398
|
)
|
|
380
399
|
|
|
381
400
|
if (Schema.is(WebmeshSchema.ProxyChannelPacket)(packet)) {
|
|
382
|
-
yield* Queue.offer(
|
|
383
|
-
} else if (Schema.is(WebmeshSchema.
|
|
384
|
-
yield* Queue.offer(
|
|
401
|
+
yield* Queue.offer(channelQueue, { packet, respondToSender })
|
|
402
|
+
} else if (Schema.is(WebmeshSchema.DirectChannelPacket)(packet)) {
|
|
403
|
+
yield* Queue.offer(channelQueue, { packet, respondToSender })
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (packet._tag === 'ProxyChannelRequest' || packet._tag === 'DirectChannelRequest') {
|
|
407
|
+
yield* Queue.offer(channelRequestsQueue, {
|
|
408
|
+
channelName: packet.channelName,
|
|
409
|
+
source: packet.source,
|
|
410
|
+
mode: packet._tag === 'ProxyChannelRequest' ? 'proxy' : 'direct',
|
|
411
|
+
})
|
|
385
412
|
}
|
|
386
413
|
} else {
|
|
387
|
-
if (Schema.is(WebmeshSchema.
|
|
414
|
+
if (Schema.is(WebmeshSchema.DirectChannelPacket)(packet)) {
|
|
388
415
|
const noTransferableResponse = checkTransferableEdges(packet)
|
|
389
416
|
if (noTransferableResponse !== undefined) {
|
|
390
417
|
yield* Effect.spanEvent(`No transferable edges found for ${packet.source}→${packet.target}`)
|
|
@@ -417,7 +444,7 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
417
444
|
})
|
|
418
445
|
yield* sendPacket(edgeAddedPacket).pipe(Effect.orDie)
|
|
419
446
|
}).pipe(
|
|
420
|
-
Effect.annotateLogs({ 'addEdge:target': targetNodeName }),
|
|
447
|
+
Effect.annotateLogs({ 'addEdge:target': targetNodeName, nodeName }),
|
|
421
448
|
Effect.withSpan(`addEdge:${nodeName}→${targetNodeName}`, {
|
|
422
449
|
attributes: { supportsTransferables: edgeChannel.supportsTransferables },
|
|
423
450
|
}),
|
|
@@ -434,13 +461,16 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
434
461
|
edgeChannels.delete(targetNodeName)
|
|
435
462
|
})
|
|
436
463
|
|
|
464
|
+
const hasChannel: MeshNode['hasChannel'] = ({ target, channelName }) =>
|
|
465
|
+
Effect.sync(() => channelMap.has(`target:${target}, channelName:${channelName}`))
|
|
466
|
+
|
|
437
467
|
// TODO add heartbeat to detect dead edges (for both e2e and proxying)
|
|
438
468
|
// TODO when a channel is established in the same origin, we can use a weblock to detect disconnects
|
|
439
469
|
const makeChannel: MeshNode['makeChannel'] = ({
|
|
440
470
|
target,
|
|
441
471
|
channelName,
|
|
442
472
|
schema: inputSchema,
|
|
443
|
-
// TODO in the future we could have a mode that prefers
|
|
473
|
+
// TODO in the future we could have a mode that prefers directs and then falls back to proxies if needed
|
|
444
474
|
mode,
|
|
445
475
|
timeout = Duration.seconds(1),
|
|
446
476
|
}) =>
|
|
@@ -454,24 +484,24 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
454
484
|
shouldNeverHappen(`Channel ${channelKey} already exists`, existingChannel)
|
|
455
485
|
}
|
|
456
486
|
} else {
|
|
457
|
-
const
|
|
487
|
+
const channelQueue = yield* Queue.unbounded<MessageQueueItem | ProxyQueueItem>().pipe(
|
|
458
488
|
Effect.acquireRelease(Queue.shutdown),
|
|
459
489
|
)
|
|
460
|
-
channelMap.set(channelKey, { queue, debugInfo: undefined })
|
|
490
|
+
channelMap.set(channelKey, { queue: channelQueue, debugInfo: undefined })
|
|
461
491
|
}
|
|
462
492
|
|
|
463
|
-
const
|
|
493
|
+
const channelQueue = channelMap.get(channelKey)!.queue as Queue.Queue<any>
|
|
464
494
|
|
|
465
495
|
yield* Effect.addFinalizer(() => Effect.sync(() => channelMap.delete(channelKey)))
|
|
466
496
|
|
|
467
|
-
if (mode === '
|
|
497
|
+
if (mode === 'direct') {
|
|
468
498
|
const incomingPacketsQueue = yield* Queue.unbounded<any>().pipe(Effect.acquireRelease(Queue.shutdown))
|
|
469
499
|
|
|
470
500
|
// We're we're draining the queue into another new queue.
|
|
471
501
|
// It's a bit of a mystery why this is needed, since the unit tests also work without it.
|
|
472
502
|
// But for the LiveStore devtools to actually work, we need to do this.
|
|
473
503
|
// We should figure out some day why this is needed and further simplify if possible.
|
|
474
|
-
yield* Queue.takeBetween(
|
|
504
|
+
yield* Queue.takeBetween(channelQueue, 1, 10).pipe(
|
|
475
505
|
Effect.tap((_) => Queue.offerAll(incomingPacketsQueue, _)),
|
|
476
506
|
Effect.forever,
|
|
477
507
|
Effect.interruptible,
|
|
@@ -480,7 +510,7 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
480
510
|
)
|
|
481
511
|
|
|
482
512
|
// NOTE already retries internally when transferables are required
|
|
483
|
-
const { webChannel, initialEdgeDeferred } = yield*
|
|
513
|
+
const { webChannel, initialEdgeDeferred } = yield* makeDirectChannel({
|
|
484
514
|
nodeName,
|
|
485
515
|
incomingPacketsQueue,
|
|
486
516
|
newEdgeAvailablePubSub,
|
|
@@ -491,7 +521,7 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
491
521
|
checkTransferableEdges,
|
|
492
522
|
})
|
|
493
523
|
|
|
494
|
-
channelMap.set(channelKey, { queue, debugInfo: { channel: webChannel, target } })
|
|
524
|
+
channelMap.set(channelKey, { queue: channelQueue, debugInfo: { channel: webChannel, target } })
|
|
495
525
|
|
|
496
526
|
yield* initialEdgeDeferred
|
|
497
527
|
|
|
@@ -503,11 +533,11 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
503
533
|
target,
|
|
504
534
|
channelName,
|
|
505
535
|
schema,
|
|
506
|
-
queue,
|
|
536
|
+
queue: channelQueue,
|
|
507
537
|
sendPacket,
|
|
508
538
|
})
|
|
509
539
|
|
|
510
|
-
channelMap.set(channelKey, { queue, debugInfo: { channel, target } })
|
|
540
|
+
channelMap.set(channelKey, { queue: channelQueue, debugInfo: { channel, target } })
|
|
511
541
|
|
|
512
542
|
return channel
|
|
513
543
|
}
|
|
@@ -516,9 +546,34 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
516
546
|
Effect.withSpanScoped(`makeChannel:${nodeName}→${target}(${channelName})`, {
|
|
517
547
|
attributes: { target, channelName, mode, timeout },
|
|
518
548
|
}),
|
|
519
|
-
Effect.annotateLogs({ nodeName }),
|
|
549
|
+
Effect.annotateLogs({ nodeName, target, channelName }),
|
|
520
550
|
)
|
|
521
551
|
|
|
552
|
+
// TODO consider supporting multiple listeners
|
|
553
|
+
// TODO also provide a way to allow for reconnects
|
|
554
|
+
let listenAlreadyStarted = false
|
|
555
|
+
const listenForChannel: MeshNode['listenForChannel'] = Stream.suspend(() => {
|
|
556
|
+
if (listenAlreadyStarted) {
|
|
557
|
+
return shouldNeverHappen('listenForChannel already started')
|
|
558
|
+
}
|
|
559
|
+
listenAlreadyStarted = true
|
|
560
|
+
|
|
561
|
+
const hash = (res: ListenForChannelResult) => `${res.channelName}:${res.source}:${res.mode}`
|
|
562
|
+
type HashedListenForChannelResult = string
|
|
563
|
+
const seen = new Set<HashedListenForChannelResult>()
|
|
564
|
+
|
|
565
|
+
return Stream.fromQueue(channelRequestsQueue).pipe(
|
|
566
|
+
Stream.filter((res) => {
|
|
567
|
+
const hashed = hash(res)
|
|
568
|
+
if (seen.has(hashed)) {
|
|
569
|
+
return false
|
|
570
|
+
}
|
|
571
|
+
seen.add(hashed)
|
|
572
|
+
return true
|
|
573
|
+
}),
|
|
574
|
+
)
|
|
575
|
+
})
|
|
576
|
+
|
|
522
577
|
const makeBroadcastChannel: MeshNode['makeBroadcastChannel'] = ({ channelName, schema }) =>
|
|
523
578
|
Effect.scopeWithCloseable((scope) =>
|
|
524
579
|
Effect.gen(function* () {
|
|
@@ -560,7 +615,7 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
560
615
|
send,
|
|
561
616
|
listen,
|
|
562
617
|
closedDeferred,
|
|
563
|
-
supportsTransferables:
|
|
618
|
+
supportsTransferables: false,
|
|
564
619
|
schema: { listen: schema, send: schema },
|
|
565
620
|
shutdown: Scope.close(scope, Exit.void),
|
|
566
621
|
debugInfo,
|
|
@@ -609,7 +664,7 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
609
664
|
ping: (payload) => {
|
|
610
665
|
Effect.gen(function* () {
|
|
611
666
|
const msg = (via: string) =>
|
|
612
|
-
WebChannel.DebugPingMessage.make({ message: `ping from ${nodeName} via
|
|
667
|
+
WebChannel.DebugPingMessage.make({ message: `ping from ${nodeName} via ${via}`, payload })
|
|
613
668
|
|
|
614
669
|
for (const [channelName, con] of edgeChannels) {
|
|
615
670
|
yield* Effect.logDebug(`sending ping via edge ${channelName}`)
|
|
@@ -617,7 +672,11 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
617
672
|
}
|
|
618
673
|
|
|
619
674
|
for (const [channelKey, channel] of channelMap) {
|
|
620
|
-
if (channel.debugInfo === undefined)
|
|
675
|
+
if (channel.debugInfo === undefined) {
|
|
676
|
+
yield* Effect.logDebug(`channel ${channelKey} has no debug info`)
|
|
677
|
+
continue
|
|
678
|
+
}
|
|
679
|
+
// if (channel.debugInfo === undefined) continue
|
|
621
680
|
yield* Effect.logDebug(`sending ping via channel ${channelKey}`)
|
|
622
681
|
yield* channel.debugInfo.channel.send(msg(`channel ${channelKey}`) as any)
|
|
623
682
|
}
|
|
@@ -640,8 +699,9 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
640
699
|
yield* Effect.logDebug(`Waiting ${timeoutMs}ms for topology response`)
|
|
641
700
|
yield* Effect.sleep(timeoutMs)
|
|
642
701
|
|
|
702
|
+
yield* Effect.logDebug(`Topology response (from ${nodeName}):`)
|
|
643
703
|
for (const [key, value] of item) {
|
|
644
|
-
yield* Effect.logDebug(`node '${key}'
|
|
704
|
+
yield* Effect.logDebug(` node '${key}' has edge to: ${Array.from(value.values()).join(', ')}`)
|
|
645
705
|
}
|
|
646
706
|
}).pipe(Effect.provide(runtime), Effect.tapCauseLogPretty, Effect.runPromise),
|
|
647
707
|
}
|
|
@@ -650,7 +710,9 @@ export const makeMeshNode = <TName extends MeshNodeName>(
|
|
|
650
710
|
nodeName,
|
|
651
711
|
addEdge,
|
|
652
712
|
removeEdge,
|
|
713
|
+
hasChannel,
|
|
653
714
|
makeChannel,
|
|
715
|
+
listenForChannel,
|
|
654
716
|
makeBroadcastChannel,
|
|
655
717
|
edgeKeys,
|
|
656
718
|
debug,
|
package/src/websocket-edge.ts
CHANGED
|
@@ -42,14 +42,16 @@ export type SocketType =
|
|
|
42
42
|
export const connectViaWebSocket = ({
|
|
43
43
|
node,
|
|
44
44
|
url,
|
|
45
|
+
openTimeout,
|
|
45
46
|
}: {
|
|
46
47
|
node: MeshNode
|
|
47
48
|
url: string
|
|
49
|
+
openTimeout?: number
|
|
48
50
|
}): Effect.Effect<void, never, Scope.Scope | HttpClient.HttpClient> =>
|
|
49
51
|
Effect.gen(function* () {
|
|
50
52
|
const disconnected = yield* Deferred.make<void>()
|
|
51
53
|
|
|
52
|
-
const socket = yield* Socket.makeWebSocket(url, { openTimeout
|
|
54
|
+
const socket = yield* Socket.makeWebSocket(url, { openTimeout })
|
|
53
55
|
|
|
54
56
|
const edgeChannel = yield* makeWebSocketEdge({
|
|
55
57
|
socket,
|
|
@@ -106,6 +108,9 @@ export const makeWebSocketEdge = ({
|
|
|
106
108
|
Stream.catchTag(
|
|
107
109
|
'SocketError',
|
|
108
110
|
Effect.fn(function* (error) {
|
|
111
|
+
// yield* Effect.logError(`[websocket-edge] Socket error`, error)
|
|
112
|
+
// In the case of the socket being closed, we're interrupting the stream
|
|
113
|
+
// and close the WebChannel (which can be observed from the outside)
|
|
109
114
|
if (error.reason === 'Close') {
|
|
110
115
|
yield* isConnectedLatch.close
|
|
111
116
|
yield* Deferred.succeed(closedDeferred, undefined)
|
|
@@ -123,6 +128,7 @@ export const makeWebSocketEdge = ({
|
|
|
123
128
|
yield* Deferred.succeed(fromDeferred, msg.from)
|
|
124
129
|
} else {
|
|
125
130
|
const decodedPayload = yield* Schema.decode(schema.listen)(msg.payload)
|
|
131
|
+
// yield* Effect.logDebug(`[websocket-edge] recv from ${msg.from}: ${decodedPayload._tag}`, decodedPayload)
|
|
126
132
|
yield* Queue.offer(listenQueue, decodedPayload)
|
|
127
133
|
}
|
|
128
134
|
}),
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-channel-internal.d.ts","sourceRoot":"","sources":["../../src/channel/message-channel-internal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAEL,MAAM,EAIN,KAAK,EAEL,KAAK,EAEL,UAAU,EACX,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAA0B,MAAM,cAAc,CAAA;AACjH,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,YAAY,CAAA;IACtB,kDAAkD;IAClD,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnD,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACnD,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,UAAU,CAAC,oBAAoB,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxF,sBAAsB,EAAE,CACtB,MAAM,EAAE,OAAO,UAAU,CAAC,oBAAoB,CAAC,IAAI,KAChD,OAAO,UAAU,CAAC,qCAAqC,CAAC,IAAI,GAAG,SAAS,CAAA;IAC7E,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CACpD;AAOD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,gJAWxC,sBAAsB,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,6EAA6E;IAC7E,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;CACjB,KAAG,MAAM,CAAC,MAAM,CACf,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAC/B,OAAO,UAAU,CAAC,qCAAqC,CAAC,IAAI,EAC5D,KAAK,CAAC,KAAK,CAuS2D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-channel-internal.js","sourceRoot":"","sources":["../../src/channel/message-channel-internal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-channel.d.ts","sourceRoot":"","sources":["../../src/channel/message-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,MAAM,EAMN,KAAK,EAGL,UAAU,EACX,MAAM,yBAAyB,CAAA;AAIhC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAG3E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAAI,8HAShC,sBAAsB;gBAyLS,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAI9D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-channel.js","sourceRoot":"","sources":["../../src/channel/message-channel.ts"],"names":[],"mappings":"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"}
|