import { LayerGroup, LayerOptions } from "leaflet"; import { EventPlayerBase } from "../EventPlayer"; import { PlayBackElement } from "../playback/PlaybackData"; import {WS} from './websocket-client'; export class LivePlay extends EventPlayerBase { private webSocket:WS.JSONWebsocketClient; constructor(webSocket?:WS.JSONWebsocketClient | string,options?:LayerOptions) { super(options); if(webSocket) this.setWebsocket(webSocket); } setWebsocket(ws:WS.JSONWebsocketClient | string) { if(typeof ws === 'string') { this.webSocket = new WS.JSONWebsocketClient(ws); } else { this.webSocket = ws; } this.webSocket.on('message',this.onWsMessage.bind(this)); } onEvent(ev:PlayBackElement) { const event = this.events.get(ev.event.name); if(!event) { console.error("Unknown event " + ev.event.name); return; } event.do({playback:this},ev.event.args); } private onWsMessage(msg:WS.Data) { this.onEvent(msg.data); } }