Stage 255
This commit is contained in:
		
							parent
							
								
									f7158a83cf
								
							
						
					
					
						commit
						454b820669
					
				| 
						 | 
				
			
			@ -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({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										542
									
								
								script/index.js
								
								
								
								
							
							
						
						
									
										542
									
								
								script/index.js
								
								
								
								
							
										
											
												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