add unlistenMessage to rtmt

This commit is contained in:
Halit Aksoy 2022-07-30 16:19:25 +03:00
parent af98005ea1
commit 3947f28195
2 changed files with 9 additions and 2 deletions

View File

@ -4,4 +4,5 @@ export type OnMessage = (message : Object) => any
export interface RTMT{
sendMessage : (channel : string, message : Object) => any
listenMessage : (channel : string, callback : OnMessage) => any
unlistenMessage : (channel : string, callback : OnMessage) => any
}

View File

@ -1,12 +1,12 @@
import { decode, encode } from "./encode_decode_message";
import { Bytes, OnMessage, RTMT } from "./rtmt";
import { server } from "../service/http_service";
import { channel_ping, channel_pong } from "../const/channel_names";
import { server } from "../const/config";
const PING_INTERVAL = 15000, PING_INTERVAL_BUFFER_TIME = 1000;
export class RTMTWS implements RTMT {
private messageChannels: Map<String, OnMessage>;
private messageChannels: Map<String, OnMessage | undefined>;
private ws: WebSocket;
private pingTimeout?: number = undefined;
@ -69,10 +69,16 @@ export class RTMTWS implements RTMT {
this.ws.send(data);
}
// todo: support multible listeners
listenMessage(channel: string, callback: OnMessage) {
this.messageChannels.set(channel, callback);
}
// todo: support multible listeners
unlistenMessage(channel : string, callback : OnMessage) {
this.messageChannels.set(channel, undefined);
}
onWebSocketMessage(rtmt: RTMTWS, event: MessageEvent) {
const { channel, message } = decode(event.data);
rtmt.onMessage(channel, message);