66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
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");
|
|
}
|
|
}
|
|
} |