From d0712ad198b6a985e2c729bf182ad4190928bb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abdussamed=20ULUTA=C5=9E?= Date: Fri, 16 Dec 2022 23:54:10 +0300 Subject: [PATCH] Room Messaging complete --- Source/Services/DataTransfer.js | 4 +- Source/Services/Room.js | 10 ++-- frontend/Peer.ts | 2 - frontend/Room.ts | 84 +++++++++++++++++++++++++-------- frontend/index.ts | 19 +++++++- script/index.js | 68 +++++++++++++++++++++----- script/index.js.map | 2 +- test.html | 27 +++++++---- 8 files changed, 167 insertions(+), 49 deletions(-) diff --git a/Source/Services/DataTransfer.js b/Source/Services/DataTransfer.js index ffe1b0f..2cbb360 100644 --- a/Source/Services/DataTransfer.js +++ b/Source/Services/DataTransfer.js @@ -51,7 +51,7 @@ addService(({ break; } case "pack/room":{ - let {to,pack, handshake} = message; + let {to,pack, handshake,wom} = message; if(Room.rooms.has(to)) { if(!client.rooms.has(to)) @@ -63,7 +63,7 @@ addService(({ Room.rooms.get(to).send([{ from: client.id, pack: pack - }, 'pack']); + }, 'pack'], wom ? client.id : void 0); handshake && end({ type: 'success' }) diff --git a/Source/Services/Room.js b/Source/Services/Room.js index 37f12c9..04a8693 100644 --- a/Source/Services/Room.js +++ b/Source/Services/Room.js @@ -83,9 +83,12 @@ Room.prototype.toJSON = function(){ obj.waitingInvited = [...this.waitingInvited]; return obj; }; -Room.prototype.send = function(obj){ +Room.prototype.send = function(obj, withOut){ for (const client of this.clients.values()) { - client.send(obj); + if(client.id != withOut) + { + client.send(obj); + } } term.green("Room bulk message ").white(this.name," in ").yellow(this.clients.size + "").white(" clients")('\n'); }; @@ -171,7 +174,8 @@ let CreateRoomVerify = joi.object({ joinType: joi.string().pattern(/^free$|^invite$|^password$|^lock$/).required(), description: joi.string().required(), name: joi.string().required(), - credential: joi.string().optional() + credential: joi.string().optional(), + ifexistsJoin: joi.boolean().optional() }); addService(({ diff --git a/frontend/Peer.ts b/frontend/Peer.ts index aa9a7ac..933c1ca 100644 --- a/frontend/Peer.ts +++ b/frontend/Peer.ts @@ -4,9 +4,7 @@ import MWSE from "./index"; interface IPeerOptions{ }; -interface IPeerMetadata{ -}; export default class Peer extends EventTarget { diff --git a/frontend/Room.ts b/frontend/Room.ts index 3a4dd34..fb7bfef 100644 --- a/frontend/Room.ts +++ b/frontend/Room.ts @@ -1,3 +1,4 @@ +import EventTarget from "./EventTarget"; import MWSE from "./index"; export interface IRoomOptions @@ -14,34 +15,79 @@ export interface IRoomOptions } -export default class Room +export default class Room extends EventTarget { public mwse : MWSE; public options! : IRoomOptions; - public events : {[key:string]:Function[]} = {}; + public roomId? : string; + + public accessType? : "public"|"private"; + public description? : string; + public joinType? : "free"|"invite"|"password"|"lock"; + public name? : string; + public owner? : string; + constructor(wsts:MWSE){ + super(); this.mwse = wsts; } - public setRoomOptions(options : IRoomOptions) + public setRoomOptions(options : IRoomOptions | string) { - this.options = options; - } - private emit(eventName :string, ...args:any[]) - { - if(this.events[eventName]) + if(typeof options == "string") { - for (const callback of this.events[eventName]) { - callback(...args); - } - } - } - public on(eventName :string, callback:Function) - { - if(this.events[eventName]) - { - this.events[eventName].push(callback) + this.roomId = options; }else{ - this.events[eventName] = [callback]; + this.options = options; } } + + setRoomId(uuid: string){ + this.roomId = uuid; + } + async createRoom(roomOptions : IRoomOptions){ + let options = this.options || roomOptions; + let result = await this.mwse.EventPooling.request({ + type:'create-room', + ...options + }); + if(result.status == 'fail') + { + if(result.message == "ALREADY-EXISTS") + { + return this.join(); + } + throw new Error(result.message || result.messages); + }else{ + this.options = { + ...this.options, + ...result.room + }; + this.roomId = result.room.id; + } + } + async join(){ + let result = await this.mwse.EventPooling.request({ + type:'joinroom', + name: this.options.name, + credential: this.options.credential + }); + if(result.status == 'fail') + { + throw new Error(result.message); + }else{ + this.options = { + ...this.options, + ...result.room + }; + this.roomId = result.room.id; + } + } + async send(pack: any, wom:boolean = false){ + await this.mwse.EventPooling.request({ + type:'pack/room', + pack, + to: this.roomId, + wom + }); + } } \ No newline at end of file diff --git a/frontend/index.ts b/frontend/index.ts index 0f42725..28d8097 100644 --- a/frontend/index.ts +++ b/frontend/index.ts @@ -37,11 +37,28 @@ export default class MWSE extends EventTarget { let {to,pack} = payload; this.peer(to).emit('message', pack); }) + this.EventPooling.signal('pack/room',(payload : {to:string,pack:any}) => { + let {to,pack} = payload; + this.room(to).emit('message', pack); + }) + } - public room(options: IRoomOptions) + public room(options: IRoomOptions | string) : Room { + if(typeof options == "string") + { + if(this.rooms.has(options)) + { + 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.emit('room'); return room; } public peer(options: string | IRoomOptions) : Peer diff --git a/script/index.js b/script/index.js index e18d7d9..046e3eb 100644 --- a/script/index.js +++ b/script/index.js @@ -184,10 +184,19 @@ class MWSE extends (0, _eventTargetDefault.default) { let { to , pack } = payload; this.peer(to).emit("message", pack); }); + this.EventPooling.signal("pack/room", (payload)=>{ + let { to , pack } = payload; + this.room(to).emit("message", pack); + }); } room(options) { + if (typeof options == "string") { + if (this.rooms.has(options)) return this.rooms.get(options); + if (this.rooms.has(options)) return this.rooms.get(options); + } let room = new (0, _roomDefault.default)(this); room.setRoomOptions(options); + this.emit("room"); return room; } peer(options) { @@ -411,27 +420,64 @@ exports.default = EventTarget; },{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"7qlv2":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -class Room { - events = {}; +var _eventTarget = require("./EventTarget"); +var _eventTargetDefault = parcelHelpers.interopDefault(_eventTarget); +class Room extends (0, _eventTargetDefault.default) { constructor(wsts){ + super(); this.mwse = wsts; } setRoomOptions(options) { - this.options = options; + if (typeof options == "string") this.roomId = options; + else this.options = options; } - emit(eventName, ...args) { - if (this.events[eventName]) for (const callback of this.events[eventName])callback(...args); + setRoomId(uuid) { + this.roomId = uuid; } - on(eventName, callback) { - if (this.events[eventName]) this.events[eventName].push(callback); - else this.events[eventName] = [ - callback - ]; + async createRoom(roomOptions) { + let options = this.options || roomOptions; + let result = await this.mwse.EventPooling.request({ + type: "create-room", + ...options + }); + if (result.status == "fail") { + if (result.message == "ALREADY-EXISTS") return this.join(); + throw new Error(result.message || result.messages); + } else { + this.options = { + ...this.options, + ...result.room + }; + this.roomId = result.room.id; + } + } + async join() { + let result = await this.mwse.EventPooling.request({ + type: "joinroom", + name: this.options.name, + credential: this.options.credential + }); + if (result.status == "fail") throw new Error(result.message); + else { + this.options = { + ...this.options, + ...result.room + }; + this.roomId = result.room.id; + } + } + async send(pack, wom = false) { + await this.mwse.EventPooling.request({ + type: "pack/room", + pack, + to: this.roomId, + wom + }); } } exports.default = Room; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"3kvWC":[function(require,module,exports) { +},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE","./EventTarget":"lleyn"}],"3kvWC":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); class WSTSProtocol { diff --git a/script/index.js.map b/script/index.js.map index 555528a..2f93e22 100644 --- a/script/index.js.map +++ b/script/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["frontend/index.ts","frontend/Connection.ts","../../../AppData/Roaming/npm/node_modules/parcel/node_modules/@parcel/transformer-js/src/esmodule-helpers.js","frontend/EventPool.ts","frontend/Peer.ts","frontend/EventTarget.ts","frontend/Room.ts","frontend/WSTSProtocol.ts"],"sourcesContent":["import {Connection,IConnection} from \"./Connection\";\r\nimport EventPool from \"./EventPool\";\r\nimport EventTarget from \"./EventTarget\";\r\nimport Peer from \"./Peer\";\r\nimport Room, { IRoomOptions } from \"./Room\";\r\nimport WSTSProtocol from \"./WSTSProtocol\";\r\nexport default class MWSE extends EventTarget {\r\n public server! : Connection;\r\n public WSTSProtocol! : WSTSProtocol;\r\n public EventPooling! : EventPool;\r\n public rooms : Map = new Map();\r\n public pairs : Map = new Map();\r\n public peers : Map = new Map();\r\n public me! : Peer;\r\n constructor(options: IConnection){\r\n super();\r\n this.server = new Connection(options);\r\n this.server.connect();\r\n this.WSTSProtocol = new WSTSProtocol(this);\r\n this.EventPooling = new EventPool(this);\r\n this.me = new Peer(this);\r\n this.me.scope(()=>{\r\n this.peers.set('me', this.me);\r\n this.peers.set(this.me.socketId as string, this.me);\r\n })\r\n this.server.onActive(async ()=>{\r\n this.me.setSocketId('me');\r\n await this.me.metadata();\r\n this.emit('scope');\r\n this.activeScope = true;\r\n });\r\n this.packMessagingSystem();\r\n }\r\n private packMessagingSystem()\r\n {\r\n this.EventPooling.signal('pack',(payload : {to:string,pack:any}) => {\r\n let {to,pack} = payload;\r\n this.peer(to).emit('message', pack);\r\n })\r\n }\r\n public room(options: IRoomOptions)\r\n {\r\n let room = new Room(this);\r\n room.setRoomOptions(options);\r\n return room;\r\n }\r\n public peer(options: string | IRoomOptions) : Peer\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n if(this.peers.has(options))\r\n {\r\n return this.peers.get(options) as Peer\r\n }\r\n if(this.pairs.has(options))\r\n {\r\n return this.pairs.get(options) as Peer\r\n }\r\n }\r\n let peer = new Peer(this);\r\n peer.setPeerOptions(options);\r\n this.emit('peer', peer);\r\n return peer;\r\n }\r\n};\r\n\r\ndeclare global {\r\n interface Window {\r\n MWSE: any;\r\n }\r\n}\r\n\r\nwindow.MWSE = MWSE;","export interface IConnection{\r\n endpoint: string;\r\n autoPair?: boolean;\r\n}\r\nexport class Connection\r\n{\r\n public ws! : WebSocket;\r\n public endpoint : URL;\r\n public autoPair : boolean = false;\r\n public connected : boolean = false;\r\n constructor(options: IConnection){\r\n this.endpoint = new URL(options.endpoint);\r\n this.autoPair = options.autoPair || false;\r\n }\r\n public connect()\r\n {\r\n this.ws = new WebSocket(this.endpoint.href);\r\n this.addWSEvents();\r\n }\r\n public disconnect()\r\n {\r\n this.ws.close();\r\n }\r\n public addWSEvents()\r\n {\r\n this.ws.addEventListener(\"open\", () => this.eventOpen());\r\n this.ws.addEventListener(\"close\", () => this.eventClose());\r\n this.ws.addEventListener(\"error\", () => this.eventError());\r\n this.ws.addEventListener(\"message\", ({data}) => this.eventMessage(data as string | ArrayBuffer));\r\n }\r\n private eventOpen()\r\n {\r\n this.connected = true;\r\n for (const callback of this.activeConnectionEvent) {\r\n callback(void 0);\r\n }\r\n }\r\n private eventClose()\r\n {\r\n this.connected = false;\r\n }\r\n private eventError()\r\n {\r\n this.connected = false;\r\n }\r\n private recaivePackEvent : ((data:any) => any)[] = [];\r\n public onRecaivePack(func:(data:any) => any)\r\n {\r\n this.recaivePackEvent.push(func);\r\n }\r\n private activeConnectionEvent : Function[] = [];\r\n public onActive(func:Function)\r\n {\r\n if(this.connected)\r\n {\r\n func()\r\n }else{\r\n this.activeConnectionEvent.push(func);\r\n }\r\n }\r\n private eventMessage(data: string | ArrayBuffer)\r\n {\r\n if(typeof data == \"string\")\r\n {\r\n let $data = JSON.parse(data);\r\n for (const callback of this.recaivePackEvent) {\r\n callback($data);\r\n }\r\n }\r\n }\r\n public tranferToServer(data:any)\r\n {\r\n if(this.connected)\r\n {\r\n this.ws.send(JSON.stringify(data));\r\n }\r\n }\r\n}","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","import MWSE from \"./index\";\r\nimport { Message } from \"./WSTSProtocol\";\r\n\r\nexport default class EventPool\r\n{\r\n public wsts : MWSE;\r\n public events : Map = new Map();\r\n public signals : Map = new Map();\r\n public count = 0;\r\n constructor(wsts:MWSE){\r\n this.wsts = wsts;\r\n }\r\n public request(msg: Message) : Promise\r\n {\r\n return new Promise((ok,rej) => {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.SendRequest(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n ok(data);\r\n },\r\n (data:any) => {\r\n rej(data);\r\n }\r\n ]);\r\n })\r\n }\r\n public stream(msg: Message, callback: Function)\r\n {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.StartStream(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n callback(data);\r\n },\r\n () => { }\r\n ]);\r\n }\r\n public signal(event: string, callback: Function)\r\n {\r\n let T = this.signals.get(event);\r\n if(!T)\r\n {\r\n this.signals.set(event, [callback]);\r\n }else{\r\n T.push(callback);\r\n }\r\n }\r\n}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\n\r\ninterface IPeerOptions{\r\n\r\n};\r\ninterface IPeerMetadata{\r\n\r\n};\r\n\r\nexport default class Peer extends EventTarget\r\n{\r\n public mwse : MWSE;\r\n public options! : IPeerOptions;\r\n public socketId? : string;\r\n public selfSocket : boolean = false;\r\n public active : boolean = false;\r\n constructor(wsts:MWSE){\r\n super();\r\n this.mwse = wsts;\r\n }\r\n setPeerOptions(options: string | IPeerOptions){\r\n if(typeof options == \"string\")\r\n {\r\n this.setSocketId(options)\r\n }else{\r\n this.options = options;\r\n }\r\n }\r\n setSocketId(uuid: string){\r\n this.socketId = uuid;\r\n }\r\n async metadata() : Promise\r\n {\r\n if(this.socketId == 'me')\r\n {\r\n let result = await this.mwse.EventPooling.request({\r\n type:'my/socketid'\r\n });\r\n this.selfSocket = true;\r\n this.active ||= true;\r\n this.socketId = result;\r\n this.emit('scope');\r\n this.activeScope = true;\r\n return result;\r\n }\r\n }\r\n async enablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'everybody'\r\n });\r\n }\r\n async disablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'disable'\r\n });\r\n }\r\n async send(pack: any){\r\n await this.mwse.EventPooling.request({\r\n type:'pack/to',\r\n pack,\r\n to: this.socketId\r\n });\r\n }\r\n}","export default class EventTarget\r\n{\r\n private events : {[key:string]:Function[]} = {};\r\n public emit(eventName :string, ...args:any[])\r\n {\r\n if(this.events[eventName])\r\n {\r\n for (const callback of this.events[eventName]) {\r\n callback(...args);\r\n }\r\n }\r\n }\r\n public on(eventName :string, callback:Function)\r\n {\r\n if(this.events[eventName])\r\n {\r\n this.events[eventName].push(callback)\r\n }else{\r\n this.events[eventName] = [callback];\r\n }\r\n }\r\n public activeScope : boolean = false;\r\n scope(f:Function)\r\n {\r\n if(this.activeScope)\r\n {\r\n f()\r\n }else{\r\n this.on('scope', f)\r\n }\r\n }\r\n}","import MWSE from \"./index\";\r\n\r\nexport interface IRoomOptions\r\n{\r\n name: string;\r\n description?:string;\r\n joinType: \"free\"|\"invite\"|\"password\"|\"lock\";\r\n credential?: string;\r\n ifexistsJoin?: boolean;\r\n accessType?: \"public\"|\"private\";\r\n notifyActionInvite?: boolean;\r\n notifyActionJoined?: boolean;\r\n notifyActionEjected?: boolean;\r\n}\r\n\r\n\r\nexport default class Room\r\n{\r\n public mwse : MWSE;\r\n public options! : IRoomOptions;\r\n public events : {[key:string]:Function[]} = {};\r\n constructor(wsts:MWSE){\r\n this.mwse = wsts;\r\n }\r\n public setRoomOptions(options : IRoomOptions)\r\n {\r\n this.options = options;\r\n }\r\n private emit(eventName :string, ...args:any[])\r\n {\r\n if(this.events[eventName])\r\n {\r\n for (const callback of this.events[eventName]) {\r\n callback(...args);\r\n }\r\n }\r\n }\r\n public on(eventName :string, callback:Function)\r\n {\r\n if(this.events[eventName])\r\n {\r\n this.events[eventName].push(callback)\r\n }else{\r\n this.events[eventName] = [callback];\r\n }\r\n }\r\n}","import MWSE from \"./index\";\r\n\r\nexport interface Message {\r\n [key:string|number]:any;\r\n}\r\nexport default class WSTSProtocol\r\n{\r\n public mwse : MWSE;\r\n constructor(wsts:MWSE){\r\n this.mwse = wsts;\r\n this.addListener();\r\n }\r\n public addListener()\r\n {\r\n this.mwse.server?.onRecaivePack((pack)=>{\r\n this.PackAnalyze(pack)\r\n })\r\n }\r\n public SendRaw(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer(pack);\r\n }\r\n public SendOnly(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer([pack,'R']);\r\n }\r\n public SendRequest(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'R']);\r\n }\r\n public StartStream(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'S']);\r\n }\r\n public PackAnalyze(data:any)\r\n {\r\n let [payload, id, action] = data;\r\n if(typeof id === 'number')\r\n {\r\n let callback = this.mwse.EventPooling.events.get(id);\r\n if(callback)\r\n {\r\n callback[0](payload, action);\r\n switch(action)\r\n {\r\n case 'E':{ // [E]ND flag\r\n this.mwse.EventPooling.events.delete(id);\r\n break;\r\n }\r\n case 'S': // [S]TREAM flag\r\n default:{\r\n break;\r\n }\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }else{\r\n let signals = this.mwse.EventPooling.signals.get(id);\r\n if(signals)\r\n {\r\n for (const callback of signals) {\r\n callback(payload);\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }\r\n }\r\n}"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":"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","sources":["frontend/index.ts","frontend/Connection.ts","../../../AppData/Roaming/npm/node_modules/parcel/node_modules/@parcel/transformer-js/src/esmodule-helpers.js","frontend/EventPool.ts","frontend/Peer.ts","frontend/EventTarget.ts","frontend/Room.ts","frontend/WSTSProtocol.ts"],"sourcesContent":["import {Connection,IConnection} from \"./Connection\";\r\nimport EventPool from \"./EventPool\";\r\nimport EventTarget from \"./EventTarget\";\r\nimport Peer from \"./Peer\";\r\nimport Room, { IRoomOptions } from \"./Room\";\r\nimport WSTSProtocol from \"./WSTSProtocol\";\r\nexport default class MWSE extends EventTarget {\r\n public server! : Connection;\r\n public WSTSProtocol! : WSTSProtocol;\r\n public EventPooling! : EventPool;\r\n public rooms : Map = new Map();\r\n public pairs : Map = new Map();\r\n public peers : Map = new Map();\r\n public me! : Peer;\r\n constructor(options: IConnection){\r\n super();\r\n this.server = new Connection(options);\r\n this.server.connect();\r\n this.WSTSProtocol = new WSTSProtocol(this);\r\n this.EventPooling = new EventPool(this);\r\n this.me = new Peer(this);\r\n this.me.scope(()=>{\r\n this.peers.set('me', this.me);\r\n this.peers.set(this.me.socketId as string, this.me);\r\n })\r\n this.server.onActive(async ()=>{\r\n this.me.setSocketId('me');\r\n await this.me.metadata();\r\n this.emit('scope');\r\n this.activeScope = true;\r\n });\r\n this.packMessagingSystem();\r\n }\r\n private packMessagingSystem()\r\n {\r\n this.EventPooling.signal('pack',(payload : {to:string,pack:any}) => {\r\n let {to,pack} = payload;\r\n this.peer(to).emit('message', pack);\r\n })\r\n this.EventPooling.signal('pack/room',(payload : {to:string,pack:any}) => {\r\n let {to,pack} = payload;\r\n this.room(to).emit('message', pack);\r\n })\r\n \r\n }\r\n public room(options: IRoomOptions | string) : Room\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n if(this.rooms.has(options))\r\n {\r\n return this.rooms.get(options) as Room\r\n }\r\n if(this.rooms.has(options))\r\n {\r\n return this.rooms.get(options) as Room\r\n }\r\n }\r\n let room = new Room(this);\r\n room.setRoomOptions(options);\r\n this.emit('room');\r\n return room;\r\n }\r\n public peer(options: string | IRoomOptions) : Peer\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n if(this.peers.has(options))\r\n {\r\n return this.peers.get(options) as Peer\r\n }\r\n if(this.pairs.has(options))\r\n {\r\n return this.pairs.get(options) as Peer\r\n }\r\n }\r\n let peer = new Peer(this);\r\n peer.setPeerOptions(options);\r\n this.emit('peer', peer);\r\n return peer;\r\n }\r\n};\r\n\r\ndeclare global {\r\n interface Window {\r\n MWSE: any;\r\n }\r\n}\r\n\r\nwindow.MWSE = MWSE;","export interface IConnection{\r\n endpoint: string;\r\n autoPair?: boolean;\r\n}\r\nexport class Connection\r\n{\r\n public ws! : WebSocket;\r\n public endpoint : URL;\r\n public autoPair : boolean = false;\r\n public connected : boolean = false;\r\n constructor(options: IConnection){\r\n this.endpoint = new URL(options.endpoint);\r\n this.autoPair = options.autoPair || false;\r\n }\r\n public connect()\r\n {\r\n this.ws = new WebSocket(this.endpoint.href);\r\n this.addWSEvents();\r\n }\r\n public disconnect()\r\n {\r\n this.ws.close();\r\n }\r\n public addWSEvents()\r\n {\r\n this.ws.addEventListener(\"open\", () => this.eventOpen());\r\n this.ws.addEventListener(\"close\", () => this.eventClose());\r\n this.ws.addEventListener(\"error\", () => this.eventError());\r\n this.ws.addEventListener(\"message\", ({data}) => this.eventMessage(data as string | ArrayBuffer));\r\n }\r\n private eventOpen()\r\n {\r\n this.connected = true;\r\n for (const callback of this.activeConnectionEvent) {\r\n callback(void 0);\r\n }\r\n }\r\n private eventClose()\r\n {\r\n this.connected = false;\r\n }\r\n private eventError()\r\n {\r\n this.connected = false;\r\n }\r\n private recaivePackEvent : ((data:any) => any)[] = [];\r\n public onRecaivePack(func:(data:any) => any)\r\n {\r\n this.recaivePackEvent.push(func);\r\n }\r\n private activeConnectionEvent : Function[] = [];\r\n public onActive(func:Function)\r\n {\r\n if(this.connected)\r\n {\r\n func()\r\n }else{\r\n this.activeConnectionEvent.push(func);\r\n }\r\n }\r\n private eventMessage(data: string | ArrayBuffer)\r\n {\r\n if(typeof data == \"string\")\r\n {\r\n let $data = JSON.parse(data);\r\n for (const callback of this.recaivePackEvent) {\r\n callback($data);\r\n }\r\n }\r\n }\r\n public tranferToServer(data:any)\r\n {\r\n if(this.connected)\r\n {\r\n this.ws.send(JSON.stringify(data));\r\n }\r\n }\r\n}","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","import MWSE from \"./index\";\r\nimport { Message } from \"./WSTSProtocol\";\r\n\r\nexport default class EventPool\r\n{\r\n public wsts : MWSE;\r\n public events : Map = new Map();\r\n public signals : Map = new Map();\r\n public count = 0;\r\n constructor(wsts:MWSE){\r\n this.wsts = wsts;\r\n }\r\n public request(msg: Message) : Promise\r\n {\r\n return new Promise((ok,rej) => {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.SendRequest(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n ok(data);\r\n },\r\n (data:any) => {\r\n rej(data);\r\n }\r\n ]);\r\n })\r\n }\r\n public stream(msg: Message, callback: Function)\r\n {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.StartStream(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n callback(data);\r\n },\r\n () => { }\r\n ]);\r\n }\r\n public signal(event: string, callback: Function)\r\n {\r\n let T = this.signals.get(event);\r\n if(!T)\r\n {\r\n this.signals.set(event, [callback]);\r\n }else{\r\n T.push(callback);\r\n }\r\n }\r\n}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\n\r\ninterface IPeerOptions{\r\n\r\n};\r\n\r\n\r\nexport default class Peer extends EventTarget\r\n{\r\n public mwse : MWSE;\r\n public options! : IPeerOptions;\r\n public socketId? : string;\r\n public selfSocket : boolean = false;\r\n public active : boolean = false;\r\n constructor(wsts:MWSE){\r\n super();\r\n this.mwse = wsts;\r\n }\r\n setPeerOptions(options: string | IPeerOptions){\r\n if(typeof options == \"string\")\r\n {\r\n this.setSocketId(options)\r\n }else{\r\n this.options = options;\r\n }\r\n }\r\n setSocketId(uuid: string){\r\n this.socketId = uuid;\r\n }\r\n async metadata() : Promise\r\n {\r\n if(this.socketId == 'me')\r\n {\r\n let result = await this.mwse.EventPooling.request({\r\n type:'my/socketid'\r\n });\r\n this.selfSocket = true;\r\n this.active ||= true;\r\n this.socketId = result;\r\n this.emit('scope');\r\n this.activeScope = true;\r\n return result;\r\n }\r\n }\r\n async enablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'everybody'\r\n });\r\n }\r\n async disablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'disable'\r\n });\r\n }\r\n async send(pack: any){\r\n await this.mwse.EventPooling.request({\r\n type:'pack/to',\r\n pack,\r\n to: this.socketId\r\n });\r\n }\r\n}","export default class EventTarget\r\n{\r\n private events : {[key:string]:Function[]} = {};\r\n public emit(eventName :string, ...args:any[])\r\n {\r\n if(this.events[eventName])\r\n {\r\n for (const callback of this.events[eventName]) {\r\n callback(...args);\r\n }\r\n }\r\n }\r\n public on(eventName :string, callback:Function)\r\n {\r\n if(this.events[eventName])\r\n {\r\n this.events[eventName].push(callback)\r\n }else{\r\n this.events[eventName] = [callback];\r\n }\r\n }\r\n public activeScope : boolean = false;\r\n scope(f:Function)\r\n {\r\n if(this.activeScope)\r\n {\r\n f()\r\n }else{\r\n this.on('scope', f)\r\n }\r\n }\r\n}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\n\r\nexport interface IRoomOptions\r\n{\r\n name: string;\r\n description?:string;\r\n joinType: \"free\"|\"invite\"|\"password\"|\"lock\";\r\n credential?: string;\r\n ifexistsJoin?: boolean;\r\n accessType?: \"public\"|\"private\";\r\n notifyActionInvite?: boolean;\r\n notifyActionJoined?: boolean;\r\n notifyActionEjected?: boolean;\r\n}\r\n\r\n\r\nexport default class Room extends EventTarget\r\n{\r\n public mwse : MWSE;\r\n public options! : IRoomOptions;\r\n public roomId? : string;\r\n\r\n public accessType? : \"public\"|\"private\";\r\n public description? : string;\r\n public joinType? : \"free\"|\"invite\"|\"password\"|\"lock\";\r\n public name? : string;\r\n public owner? : string;\r\n\r\n constructor(wsts:MWSE){\r\n super();\r\n this.mwse = wsts;\r\n }\r\n public setRoomOptions(options : IRoomOptions | string)\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n this.roomId = options;\r\n }else{\r\n this.options = options;\r\n }\r\n }\r\n \r\n setRoomId(uuid: string){\r\n this.roomId = uuid;\r\n }\r\n async createRoom(roomOptions : IRoomOptions){\r\n let options = this.options || roomOptions;\r\n let result = await this.mwse.EventPooling.request({\r\n type:'create-room',\r\n ...options\r\n });\r\n if(result.status == 'fail')\r\n {\r\n if(result.message == \"ALREADY-EXISTS\")\r\n {\r\n return this.join();\r\n }\r\n throw new Error(result.message || result.messages);\r\n }else{\r\n this.options = {\r\n ...this.options,\r\n ...result.room\r\n };\r\n this.roomId = result.room.id;\r\n }\r\n }\r\n async join(){\r\n let result = await this.mwse.EventPooling.request({\r\n type:'joinroom',\r\n name: this.options.name,\r\n credential: this.options.credential\r\n });\r\n if(result.status == 'fail')\r\n {\r\n throw new Error(result.message);\r\n }else{\r\n this.options = {\r\n ...this.options,\r\n ...result.room\r\n };\r\n this.roomId = result.room.id;\r\n }\r\n }\r\n async send(pack: any, wom:boolean = false){\r\n await this.mwse.EventPooling.request({\r\n type:'pack/room',\r\n pack,\r\n to: this.roomId,\r\n wom\r\n });\r\n }\r\n}","import MWSE from \"./index\";\r\n\r\nexport interface Message {\r\n [key:string|number]:any;\r\n}\r\nexport default class WSTSProtocol\r\n{\r\n public mwse : MWSE;\r\n constructor(wsts:MWSE){\r\n this.mwse = wsts;\r\n this.addListener();\r\n }\r\n public addListener()\r\n {\r\n this.mwse.server?.onRecaivePack((pack)=>{\r\n this.PackAnalyze(pack)\r\n })\r\n }\r\n public SendRaw(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer(pack);\r\n }\r\n public SendOnly(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer([pack,'R']);\r\n }\r\n public SendRequest(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'R']);\r\n }\r\n public StartStream(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'S']);\r\n }\r\n public PackAnalyze(data:any)\r\n {\r\n let [payload, id, action] = data;\r\n if(typeof id === 'number')\r\n {\r\n let callback = this.mwse.EventPooling.events.get(id);\r\n if(callback)\r\n {\r\n callback[0](payload, action);\r\n switch(action)\r\n {\r\n case 'E':{ // [E]ND flag\r\n this.mwse.EventPooling.events.delete(id);\r\n break;\r\n }\r\n case 'S': // [S]TREAM flag\r\n default:{\r\n break;\r\n }\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }else{\r\n let signals = this.mwse.EventPooling.signals.get(id);\r\n if(signals)\r\n {\r\n for (const callback of signals) {\r\n callback(payload);\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }\r\n }\r\n}"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/test.html b/test.html index 93bf2cd..d0ecd7a 100644 --- a/test.html +++ b/test.html @@ -9,18 +9,30 @@ \ No newline at end of file