Stage 255

This commit is contained in:
Abdussamed ULUTAŞ 2022-12-22 22:44:57 +03:00
parent f7158a83cf
commit 454b820669
7 changed files with 70 additions and 548 deletions

View File

@ -127,6 +127,21 @@ addService(({
})
break;
}
case 'is/reachable':{
if(Client.clients.has(to))
{
let otherPeer = Client.clients.get(to);
if(otherPeer.requiredPair && !otherPeer.pairs.has(to))
{
end(false);
}else{
end(true);
}
}else{
end(false);
}
break;
}
case 'auth/check':{
let auth = client.store.has('user');
return end({

View File

@ -43,6 +43,13 @@ export default class Peer extends EventTarget
return result;
}
}
async isReachable()
{
return await this.mwse.EventPooling.request({
type:'is/reachable',
to: this.socketId
});
}
async enablePairAuth(){
await this.mwse.EventPooling.request({
type:'auth/pair-system',

View File

@ -1,5 +1,6 @@
import EventTarget from "./EventTarget";
import MWSE from "./index";
import Peer from "./Peer";
export interface IRoomOptions
{
@ -26,6 +27,7 @@ export default class Room extends EventTarget
public joinType? : "free"|"invite"|"password"|"lock";
public name? : string;
public owner? : string;
public peers? : Map<string,Peer>;
constructor(wsts:MWSE){
super();
@ -37,6 +39,14 @@ export default class Room extends EventTarget
{
this.roomId = options;
}else{
Object.assign({
joinType: "free",
ifexistsJoin: true,
accessType: "private",
notifyActionInvite: true,
notifyActionJoined: true,
notifyActionEjected: true
},options);
this.options = options;
}
}
@ -90,4 +100,18 @@ export default class Room extends EventTarget
wom
});
}
async fetchAllPeers(){
let {type, peers} = await this.mwse.EventPooling.request({
type:'room-peers',
roomId: this.roomId
}) as {type:"success"|"fail", peers: string[]};
if(type == 'fail')
{
throw new Error("Cant using peers on room")
}else if(type == 'success'){
for (const peer of peers) {
this.mwse.peer(peer);
}
}
}
}

View File

@ -41,7 +41,24 @@ export default class MWSE extends EventTarget {
let {to,pack} = payload;
this.room(to).emit('message', pack);
})
this.EventPooling.signal('room/joined',(payload : {id:string,roomid:any,ownerid:string}) => {
let {id,roomid} = payload;
let room = this.room(roomid);
let peer = this.peer(id);
room.emit('join', peer);
})
this.EventPooling.signal('room/ejected',(payload : {id:string,roomid:any,ownerid:string}) => {
let {id,roomid} = payload;
let room = this.room(roomid);
let peer = this.peer(id);
room.emit('eject', peer);
})
this.EventPooling.signal('room/closed',(payload : {roomid:any}) => {
let {roomid} = payload;
let room = this.room(roomid);
room.emit('close');
this.rooms.delete(roomid);
})
}
public room(options: IRoomOptions | string) : Room
{
@ -51,13 +68,10 @@ export default class MWSE extends EventTarget {
{
return this.rooms.get(options) as Room
}
if(this.rooms.has(options))
{
return this.rooms.get(options) as Room
}
}
let room = new Room(this);
room.setRoomOptions(options);
this.rooms.set(room.roomId as string, room);
this.emit('room');
return room;
}
@ -76,6 +90,7 @@ export default class MWSE extends EventTarget {
}
let peer = new Peer(this);
peer.setPeerOptions(options);
this.peers.set(peer.socketId as string, peer);
this.emit('peer', peer);
return peer;
}

View File

@ -3,7 +3,8 @@
"version": "0.1.0",
"description": "Mikro WebSocket Engine",
"scripts": {
"compile": "parcel watch --no-hmr"
"compile": "parcel watch --no-hmr",
"build": "parcel build"
},
"source": "./frontend/index.ts",
"targets": {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long