Remove ISocket
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
import {remove} from "@welshman/lib"
|
import {remove} from "@welshman/lib"
|
||||||
import {normalizeRelayUrl} from "@welshman/util"
|
import {normalizeRelayUrl} from "@welshman/util"
|
||||||
import {ISocket, makeSocket} from "./socket.js"
|
import {Socket, makeSocket} from "./socket.js"
|
||||||
|
|
||||||
export type PoolSubscription = (socket: ISocket) => void
|
export type PoolSubscription = (socket: Socket) => void
|
||||||
|
|
||||||
export type PoolOptions = {
|
export type PoolOptions = {
|
||||||
makeSocket?: (url: string) => ISocket
|
makeSocket?: (url: string) => Socket
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Pool {
|
export class Pool {
|
||||||
_data = new Map<string, ISocket>()
|
_data = new Map<string, Socket>()
|
||||||
_subs: PoolSubscription[] = []
|
_subs: PoolSubscription[] = []
|
||||||
|
|
||||||
constructor(readonly options: PoolOptions) {}
|
constructor(readonly options: PoolOptions) {}
|
||||||
@@ -26,7 +26,7 @@ export class Pool {
|
|||||||
return makeSocket(url)
|
return makeSocket(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
get(_url: string): ISocket {
|
get(_url: string): Socket {
|
||||||
const url = normalizeRelayUrl(_url)
|
const url = normalizeRelayUrl(_url)
|
||||||
const oldSocket = this._data.get(url)
|
const oldSocket = this._data.get(url)
|
||||||
|
|
||||||
|
|||||||
@@ -77,24 +77,7 @@ export type SocketRecvSubscriber = (event: SocketEvent) => void
|
|||||||
|
|
||||||
export type SocketUnsubscriber = () => void
|
export type SocketUnsubscriber = () => void
|
||||||
|
|
||||||
export interface ISocket {
|
export class Socket {
|
||||||
open(): void
|
|
||||||
close(): void
|
|
||||||
cleanup(): void
|
|
||||||
send(message: ClientMessage): void
|
|
||||||
onSend(cb: SocketSendSubscriber): SocketUnsubscriber
|
|
||||||
subscribe(cb: SocketRecvSubscriber): SocketUnsubscriber
|
|
||||||
onError(cb: (error: string) => void): SocketUnsubscriber
|
|
||||||
onStatus(cb: (status: SocketStatus) => void): SocketUnsubscriber
|
|
||||||
onMessage(cb: (message: RelayMessage) => void): SocketUnsubscriber
|
|
||||||
onAuth(cb: (message: RelayAuthPayload) => void): SocketUnsubscriber
|
|
||||||
onEose(cb: (message: RelayEosePayload) => void): SocketUnsubscriber
|
|
||||||
onEvent(cb: (message: RelayEventPayload) => void): SocketUnsubscriber
|
|
||||||
onOk(cb: (message: RelayOkPayload) => void): SocketUnsubscriber
|
|
||||||
wrap(overrides: Partial<ISocket>): ISocket
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Socket implements ISocket {
|
|
||||||
_ws?: WebSocket
|
_ws?: WebSocket
|
||||||
_sendSubs: SocketSendSubscriber[] = []
|
_sendSubs: SocketSendSubscriber[] = []
|
||||||
_recvSubs: SocketRecvSubscriber[] = []
|
_recvSubs: SocketRecvSubscriber[] = []
|
||||||
@@ -259,9 +242,9 @@ export class Socket implements ISocket {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
wrap = (overrides: Partial<ISocket>): ISocket => {
|
wrap = (overrides: Partial<Socket>): Socket => {
|
||||||
return new Proxy(this, {
|
return new Proxy(this, {
|
||||||
get: (target, prop: keyof ISocket) => {
|
get: (target, prop: keyof Socket) => {
|
||||||
if (prop in overrides) {
|
if (prop in overrides) {
|
||||||
return overrides[prop]
|
return overrides[prop]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user