diff --git a/src/rtmt/rtmt.ts b/src/rtmt/rtmt.ts index efb6b70..bc04659 100644 --- a/src/rtmt/rtmt.ts +++ b/src/rtmt/rtmt.ts @@ -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 } \ No newline at end of file diff --git a/src/rtmt/rtmt_websocket.ts b/src/rtmt/rtmt_websocket.ts index 3f93536..180d3c2 100644 --- a/src/rtmt/rtmt_websocket.ts +++ b/src/rtmt/rtmt_websocket.ts @@ -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; + private messageChannels: Map; 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);