import MWSE from "./index"; export interface Message { [key:string|number]:any; } export default class WSTSProtocol { public mwse : MWSE; constructor(wsts:MWSE){ this.mwse = wsts; this.addListener(); } public addListener() { this.mwse.server?.onRecaivePack((pack)=>{ this.PackAnalyze(pack) }) } public SendRaw(pack: Message) { this.mwse.server.tranferToServer(pack); } public SendOnly(pack: Message) { this.mwse.server.tranferToServer([pack,'R']); } public SendRequest(pack: Message, id: number) { this.mwse.server.tranferToServer([pack, id, 'R']); } public StartStream(pack: Message, id: number) { this.mwse.server.tranferToServer([pack, id, 'S']); } public PackAnalyze(data:any) { let [payload, id, action] = data; if(typeof id === 'number') { let callback = this.mwse.EventPooling.events.get(id); if(callback) { callback[0](payload, action); switch(action) { case 'E':{ // [E]ND flag this.mwse.EventPooling.events.delete(id); break; } case 'S': // [S]TREAM flag default:{ break; } } }else console.warn("Missing event sended from server"); }else{ let signals = this.mwse.EventPooling.signals.get(id); if(signals) { for (const callback of signals) { callback(payload); } }else console.warn("Missing event sended from server"); } } }