Stage 249
This commit is contained in:
parent
d7900f827f
commit
446583afa0
|
@ -49,6 +49,39 @@ addService(({
|
|||
}
|
||||
break;
|
||||
}
|
||||
case "request/to":{
|
||||
let {to,pack, id} = message;
|
||||
if(Client.clients.has(to))
|
||||
{
|
||||
let otherPeer = Client.clients.get(to);
|
||||
if(otherPeer.requiredPair && !otherPeer.pairs.has(to))
|
||||
{
|
||||
return;
|
||||
}
|
||||
otherPeer.send([{
|
||||
from: client.id,
|
||||
pack: pack,
|
||||
id
|
||||
}, 'request']);
|
||||
};
|
||||
break;
|
||||
}
|
||||
case "response/to":{
|
||||
let {to,pack, id} = message;
|
||||
if(Client.clients.has(to))
|
||||
{
|
||||
let otherPeer = Client.clients.get(to);
|
||||
if(otherPeer.requiredPair && !otherPeer.pairs.has(to))
|
||||
{
|
||||
return;
|
||||
}
|
||||
otherPeer.send([{
|
||||
from: client.id,
|
||||
pack: pack
|
||||
}, id]);
|
||||
};
|
||||
break;
|
||||
}
|
||||
case "pack/room":{
|
||||
let {to,pack, handshake,wom} = message;
|
||||
if(Room.rooms.has(to))
|
||||
|
|
|
@ -6,6 +6,9 @@ export default class EventPool
|
|||
public wsts : MWSE;
|
||||
public events : Map<number, [Function,Function]> = new Map();
|
||||
public signals : Map<string, Function[]> = new Map();
|
||||
|
||||
public requests : Map<number, [Function,Function]> = new Map();
|
||||
|
||||
public count = 0;
|
||||
constructor(wsts:MWSE){
|
||||
this.wsts = wsts;
|
||||
|
|
|
@ -42,7 +42,14 @@ export default class Peer extends EventTarget
|
|||
this.activeScope = true;
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
async request(pack:any){
|
||||
if(this.active)
|
||||
{
|
||||
return await this.mwse.request(this.socketId as string, pack);
|
||||
}
|
||||
};
|
||||
async isReachable()
|
||||
{
|
||||
return await this.mwse.EventPooling.request({
|
||||
|
|
|
@ -3,7 +3,7 @@ import EventPool from "./EventPool";
|
|||
import EventTarget from "./EventTarget";
|
||||
import Peer from "./Peer";
|
||||
import Room, { IRoomOptions } from "./Room";
|
||||
import WSTSProtocol from "./WSTSProtocol";
|
||||
import WSTSProtocol, { Message } from "./WSTSProtocol";
|
||||
export default class MWSE extends EventTarget {
|
||||
public server! : Connection;
|
||||
public WSTSProtocol! : WSTSProtocol;
|
||||
|
@ -31,12 +31,38 @@ export default class MWSE extends EventTarget {
|
|||
});
|
||||
this.packMessagingSystem();
|
||||
}
|
||||
public async request(peerId: string, pack:Message)
|
||||
{
|
||||
return await this.EventPooling.request({
|
||||
type: 'request/to',
|
||||
to: peerId,
|
||||
pack
|
||||
});
|
||||
}
|
||||
public async response(peerId: string, requestId:number, pack:Message)
|
||||
{
|
||||
this.WSTSProtocol.SendOnly({
|
||||
type: 'response/to',
|
||||
to: peerId,
|
||||
pack,
|
||||
id: requestId
|
||||
})
|
||||
}
|
||||
private packMessagingSystem()
|
||||
{
|
||||
this.EventPooling.signal('pack',(payload : {to:string,pack:any}) => {
|
||||
let {to,pack} = payload;
|
||||
this.peer(to).emit('message', pack);
|
||||
})
|
||||
this.EventPooling.signal('request',(payload : {to:string,pack:any,id:number}) => {
|
||||
let {to,pack, id} = payload;
|
||||
this.peer(to).emit('request', {
|
||||
body: pack,
|
||||
response: (pack: Message) => {
|
||||
this.response(to, id, pack);
|
||||
}
|
||||
});
|
||||
})
|
||||
this.EventPooling.signal('pack/room',(payload : {to:string,pack:any}) => {
|
||||
let {to,pack} = payload;
|
||||
this.room(to).emit('message', pack);
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue