Room Objecttive

This commit is contained in:
Abdussamed ULUTAŞ 2022-11-21 00:09:22 +03:00
parent 8ec6380aea
commit 48ebeb4477
7 changed files with 417 additions and 33 deletions

View File

@ -14,12 +14,11 @@ function Client()
this.created_at = null;
this.store = new Map();
this.rooms = new Set();
};
Client.prototype.send = function(obj){
this.socket.sendUTF(JSON.stringify(obj));
};
Client.prototype.rooms = new Set();
exports.Client = Client;

View File

@ -2,6 +2,7 @@ const { Client } = require("../Client.js");
let {randomUUID} = require("crypto");
const joi = require("joi");
let {addService,addListener} = require("../WebSocket.js");
let term = require("terminal-kit").terminal;
function Room()
{
@ -62,7 +63,8 @@ function Room()
* @param {Room} room
*/
Room.prototype.publish = function(room){
Room.rooms.set(room.id, room);
Room.rooms.set(this.id, this);
term.green("Room Published ").white(this.name," in ").yellow(this.clients.size).white(" clients")('\n');
};
Room.prototype.toJSON = function(){
let obj = {};
@ -80,36 +82,48 @@ Room.prototype.send = function(obj){
for (const client of this.clients.values()) {
client.send(obj);
}
term.green("Room bulk message ").white(this.name," in ").yellow(this.clients.size + "").white(" clients")('\n');
};
/**
* @param {Client} client
*/
Room.prototype.join = function(client){
this.notifyActionJoined && this.send([{
if(this.notifyActionJoined)
{
this.send([{
id: client.id,
roomid: this.id,
ownerid: this.owner.id
},'room/joined']);
};
client.rooms.add(this.id);
this.clients.set(client.id, client);
term.green("Client Room joined ").white(this.name," in ").yellow(this.clients.size + "").white(" clients")('\n');
};
Room.prototype.down = function(){
term.red("Room is downed ").red(this.name," in ").yellow(this.clients.size + "").red(" clients")('\n');
this.send([{
id: client.id,
roomid: this.id,
ownerid: this.owner.id
},'room/joined']);
client.rooms.add(this.id);
this.clients.set(client.id, client);
};
Room.prototype.active = function(){
Room.rooms.set(this.id, this);
};
Room.prototype.deactive = function(){
},'room/closed']);
Room.rooms.delete(this.id);
};
/**
* @param {Client} client
*/
Room.prototype.eject = function(client){
this.notifyActionEjected && this.send([{
id: client.id,
roomid: this.id,
ownerid: this.owner.id
},'room/ejected']);
if(this.notifyActionEjected)
{
this.send([{
id: client.id,
roomid: this.id,
ownerid: this.owner.id
},'room/ejected']);
}
client.rooms.delete(this.id);
this.clients.delete(client.id);
term.red("Client Room ejected ").red(this.name," in ").yellow(this.clients.size + "").red(" clients")('\n');
};
/**
@ -121,19 +135,18 @@ addListener('connect',(global, client)=>{
let room = new Room();
room.accessType = "private";
room.joinType = "notify";
room.clients.set(client.id, client);
room.description = 'Yourself private room, you can invite friends';
room.id = client.id;
room.name = "Your Room";
room.name = "Your Room | " + client.id;
room.owner = client;
room.join(client);
room.active();
room.publish();
});
addListener('disconnect',(global, client)=>{
Room.rooms.get(client.id).eject(client);
for (const roomId of client.rooms) {
Room.rooms.get(roomId).eject(client);
Room.rooms.get(roomId).deactive();
}
});
@ -165,6 +178,32 @@ addService(({
end(room.toJSON())
break;
}
case 'room-info':{
let {name} = message;
for (const [roomId,{name:RoomName}] of Room.rooms) {
if(name == RoomName)
{
return end({
status : "success",
room : Room.rooms.get(roomId).toJSON()
})
}
};
return end({
status : "fail",
message : "NOT-FOUND-ROOM"
})
break;
}
case 'joinedrooms':{
let data = [
...client.rooms
].map(e => {
return Room.rooms.get(e).toJSON()
});
end(data)
break;
}
case 'create-room':{
let {error} = CreateRoomVerify.validate(message);
if(error)
@ -174,6 +213,16 @@ addService(({
messages: error.message
})
}else{
let {name} = message;
for (const [,{name:RoomName}] of Room.rooms) {
if(name == RoomName)
{
return end({
status : "fail",
message : "ALREADY-EXISTS"
})
}
}
let room = new Room();
room.accessType = message.accessType;
room.notifyActionInvite = message.notifyActionInvite;
@ -184,16 +233,27 @@ addService(({
room.name = message.name;
room.owner = client;
room.join(client);
room.active();
end(room.toJSON())
room.publish();
end({
status: "success",
room: room.toJSON()
});
}
break;
}
case 'join':{
let isRoom = Room.rooms.has(client.id);
case 'joinroom':{
let {name} = message;
let roomId;
for (const [roomId,{name:RoomName}] of Room.rooms) {
if(name == RoomName)
{
roomId = roomId
}
}
let isRoom = Room.rooms.has(roomId);
if(isRoom)
{
let room = Room.rooms.get(client.id);
let room = Room.rooms.get(roomId);
if(room.joinType == "lock")
{
return end({

View File

@ -5,6 +5,12 @@ let {http} = require("./HTTPServer");
let {randomUUID} = require("crypto");
const { Client } = require("./Client.js");
console.log("Web Socket Protocol is ready");
http.addListener("upgrade",() => {
console.log("HTTP Upgrading to WebSocket");
})
let wsServer = new websocket.server({
httpServer: http,
autoAcceptConnections: true

276
package-lock.json generated
View File

@ -12,9 +12,23 @@
"joi": "^17.7.0",
"knex": "^2.3.0",
"sqlite3": "^5.1.2",
"terminal-kit": "^3.0.0",
"websocket": "^1.0.34"
}
},
"node_modules/@cronvel/get-pixels": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.1.tgz",
"integrity": "sha512-gB5C5nDIacLUdsMuW8YsM9SzK3vaFANe4J11CVXpovpy7bZUGrcJKmc6m/0gWG789pKr6XSZY2aEetjFvSRw5g==",
"dependencies": {
"jpeg-js": "^0.4.4",
"ndarray": "^1.0.19",
"ndarray-pack": "^1.1.1",
"node-bitmap": "0.0.1",
"omggif": "^1.0.10",
"pngjs": "^6.0.0"
}
},
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@ -235,6 +249,11 @@
"node": ">=10"
}
},
"node_modules/chroma-js": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
"integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
},
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@ -275,6 +294,14 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
"node_modules/cwise-compiler": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz",
"integrity": "sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==",
"dependencies": {
"uniq": "^1.0.0"
}
},
"node_modules/d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
@ -606,12 +633,22 @@
"node": ">= 0.10"
}
},
"node_modules/iota-array": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz",
"integrity": "sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA=="
},
"node_modules/ip": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
"integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
"optional": true
},
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"node_modules/is-core-module": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
@ -660,6 +697,11 @@
"@sideway/pinpoint": "^2.0.0"
}
},
"node_modules/jpeg-js": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
"integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
},
"node_modules/knex": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/knex/-/knex-2.3.0.tgz",
@ -710,6 +752,14 @@
}
}
},
"node_modules/lazyness": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz",
"integrity": "sha512-KenL6EFbwxBwRxG93t0gcUyi0Nw0Ub31FJKN1laA4UscdkL1K1AxUd0gYZdcLU3v+x+wcFi4uQKS5hL+fk500g==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
@ -890,6 +940,24 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/ndarray": {
"version": "1.0.19",
"resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz",
"integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==",
"dependencies": {
"iota-array": "^1.0.0",
"is-buffer": "^1.0.2"
}
},
"node_modules/ndarray-pack": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz",
"integrity": "sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g==",
"dependencies": {
"cwise-compiler": "^1.1.2",
"ndarray": "^1.0.13"
}
},
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@ -904,11 +972,27 @@
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
},
"node_modules/nextgen-events": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.5.3.tgz",
"integrity": "sha512-P6qw6kenNXP+J9XlKJNi/MNHUQ+Lx5K8FEcSfX7/w8KJdZan5+BB5MKzuNgL2RTjHG1Svg8SehfseVEp8zAqwA==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/node-addon-api": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
"integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
},
"node_modules/node-bitmap": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz",
"integrity": "sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA==",
"engines": {
"node": ">=v0.6.5"
}
},
"node_modules/node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
@ -1042,6 +1126,11 @@
"node": ">=0.10.0"
}
},
"node_modules/omggif": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
"integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@ -1083,6 +1172,14 @@
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
"integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
},
"node_modules/pngjs": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
"integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==",
"engines": {
"node": ">=12.13.0"
}
},
"node_modules/promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
@ -1217,6 +1314,22 @@
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
"node_modules/seventh": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/seventh/-/seventh-0.8.1.tgz",
"integrity": "sha512-houkkIUA97+aLqTAfgzEAIHfPkjKaJXek7zESTrMs+eFfsHvUjzrjxEstZiFTGKwOR+VJQ4p+/AlWwObcDE+xQ==",
"dependencies": {
"setimmediate": "^1.0.5"
},
"engines": {
"node": ">=16.13.0"
}
},
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
@ -1302,6 +1415,14 @@
"safe-buffer": "~5.2.0"
}
},
"node_modules/string-kit": {
"version": "0.17.6",
"resolved": "https://registry.npmjs.org/string-kit/-/string-kit-0.17.6.tgz",
"integrity": "sha512-o3ivC9/8proGcnA5Janz3DBqpG9lEV6e8wXviPLy8RKHgqaBbRDpU0jpFUa6caarMFhgJZIom+jrjYWMplJkmw==",
"engines": {
"node": ">=14.15.0"
}
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@ -1361,6 +1482,24 @@
"node": ">=8.0.0"
}
},
"node_modules/terminal-kit": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/terminal-kit/-/terminal-kit-3.0.0.tgz",
"integrity": "sha512-GSJGYF0+hoFylKJXmq0ntE42b4S7zUkxFpf7FqHGwKFPCNeGkuv3jV0tmGquZkmfh5mYb/B2xoPJiP40mJsQrg==",
"dependencies": {
"@cronvel/get-pixels": "^3.4.1",
"chroma-js": "^2.4.2",
"lazyness": "^1.2.0",
"ndarray": "^1.0.19",
"nextgen-events": "^1.5.3",
"seventh": "^0.8.1",
"string-kit": "^0.17.6",
"tree-kit": "^0.7.4"
},
"engines": {
"node": ">=16.13.0"
}
},
"node_modules/tildify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
@ -1374,6 +1513,11 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/tree-kit": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.4.tgz",
"integrity": "sha512-Of3tPmVs3b6BhzyUJ7t0olisf47kYr9qAm0XaUpURMjdBn6TwiVaaMuTFoKkkvPGojd9trKAHlrGGcGKcdR1DA=="
},
"node_modules/type": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
@ -1387,6 +1531,11 @@
"is-typedarray": "^1.0.0"
}
},
"node_modules/uniq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
"integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA=="
},
"node_modules/unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
@ -1508,6 +1657,19 @@
}
},
"dependencies": {
"@cronvel/get-pixels": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.1.tgz",
"integrity": "sha512-gB5C5nDIacLUdsMuW8YsM9SzK3vaFANe4J11CVXpovpy7bZUGrcJKmc6m/0gWG789pKr6XSZY2aEetjFvSRw5g==",
"requires": {
"jpeg-js": "^0.4.4",
"ndarray": "^1.0.19",
"ndarray-pack": "^1.1.1",
"node-bitmap": "0.0.1",
"omggif": "^1.0.10",
"pngjs": "^6.0.0"
}
},
"@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@ -1693,6 +1855,11 @@
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
},
"chroma-js": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
"integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
},
"clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@ -1724,6 +1891,14 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
"cwise-compiler": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz",
"integrity": "sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==",
"requires": {
"uniq": "^1.0.0"
}
},
"d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
@ -1994,12 +2169,22 @@
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
},
"iota-array": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz",
"integrity": "sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA=="
},
"ip": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
"integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
"optional": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-core-module": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
@ -2042,6 +2227,11 @@
"@sideway/pinpoint": "^2.0.0"
}
},
"jpeg-js": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
"integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
},
"knex": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/knex/-/knex-2.3.0.tgz",
@ -2063,6 +2253,11 @@
"tildify": "2.0.0"
}
},
"lazyness": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz",
"integrity": "sha512-KenL6EFbwxBwRxG93t0gcUyi0Nw0Ub31FJKN1laA4UscdkL1K1AxUd0gYZdcLU3v+x+wcFi4uQKS5hL+fk500g=="
},
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
@ -2198,6 +2393,24 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"ndarray": {
"version": "1.0.19",
"resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz",
"integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==",
"requires": {
"iota-array": "^1.0.0",
"is-buffer": "^1.0.2"
}
},
"ndarray-pack": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz",
"integrity": "sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g==",
"requires": {
"cwise-compiler": "^1.1.2",
"ndarray": "^1.0.13"
}
},
"negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@ -2209,11 +2422,21 @@
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
},
"nextgen-events": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.5.3.tgz",
"integrity": "sha512-P6qw6kenNXP+J9XlKJNi/MNHUQ+Lx5K8FEcSfX7/w8KJdZan5+BB5MKzuNgL2RTjHG1Svg8SehfseVEp8zAqwA=="
},
"node-addon-api": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
"integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
},
"node-bitmap": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz",
"integrity": "sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA=="
},
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
@ -2309,6 +2532,11 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
},
"omggif": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
"integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@ -2341,6 +2569,11 @@
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
"integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
},
"pngjs": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
"integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="
},
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
@ -2428,6 +2661,19 @@
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
"seventh": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/seventh/-/seventh-0.8.1.tgz",
"integrity": "sha512-houkkIUA97+aLqTAfgzEAIHfPkjKaJXek7zESTrMs+eFfsHvUjzrjxEstZiFTGKwOR+VJQ4p+/AlWwObcDE+xQ==",
"requires": {
"setimmediate": "^1.0.5"
}
},
"signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
@ -2488,6 +2734,11 @@
"safe-buffer": "~5.2.0"
}
},
"string-kit": {
"version": "0.17.6",
"resolved": "https://registry.npmjs.org/string-kit/-/string-kit-0.17.6.tgz",
"integrity": "sha512-o3ivC9/8proGcnA5Janz3DBqpG9lEV6e8wXviPLy8RKHgqaBbRDpU0jpFUa6caarMFhgJZIom+jrjYWMplJkmw=="
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@ -2529,6 +2780,21 @@
"resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz",
"integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="
},
"terminal-kit": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/terminal-kit/-/terminal-kit-3.0.0.tgz",
"integrity": "sha512-GSJGYF0+hoFylKJXmq0ntE42b4S7zUkxFpf7FqHGwKFPCNeGkuv3jV0tmGquZkmfh5mYb/B2xoPJiP40mJsQrg==",
"requires": {
"@cronvel/get-pixels": "^3.4.1",
"chroma-js": "^2.4.2",
"lazyness": "^1.2.0",
"ndarray": "^1.0.19",
"nextgen-events": "^1.5.3",
"seventh": "^0.8.1",
"string-kit": "^0.17.6",
"tree-kit": "^0.7.4"
}
},
"tildify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
@ -2539,6 +2805,11 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"tree-kit": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.4.tgz",
"integrity": "sha512-Of3tPmVs3b6BhzyUJ7t0olisf47kYr9qAm0XaUpURMjdBn6TwiVaaMuTFoKkkvPGojd9trKAHlrGGcGKcdR1DA=="
},
"type": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
@ -2552,6 +2823,11 @@
"is-typedarray": "^1.0.0"
}
},
"uniq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
"integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA=="
},
"unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",

View File

@ -22,6 +22,7 @@
"joi": "^17.7.0",
"knex": "^2.3.0",
"sqlite3": "^5.1.2",
"terminal-kit": "^3.0.0",
"websocket": "^1.0.34"
}
}

View File

@ -12,18 +12,30 @@
let ws = new WSJS();
ws.connect('ws://localhost:8282');
ws.scope(async ()=>{
let secretRoom;
console.log("Connected ws")
let roomInfo = await ws.fetchMyRoomInfo();
let secretRoom = await ws.createRoom({
name: "Benim Odam",
description: "Gizli Odam"
});
let roomInfo = await ws.roomInfo("MY-ROOM");
if(roomInfo.status == 'fail' && roomInfo.message == "NOT-FOUND-ROOM")
{
let secretRoom = await ws.createRoom({
name: "MY-ROOM",
description: "Gizli Odam",
joinType: "free"
});
console.log(secretRoom);
}else{
}
console.log(await ws.getJoinedRooms());
});
ws.signal('id',(data)=>{
console.log("Your id is ", data.value)
});
ws.signal("room/joined",(joinStatus)=>{
console.log("Room ejected", joinStatus)
console.log("Room joined", joinStatus)
});
ws.signal("room/ejected",(ejectStatus)=>{
console.log("Room ejected", ejectStatus)

32
wsjs.js
View File

@ -115,6 +115,7 @@ WSJS.prototype.sendRaw = function(obj){
};
}
WSJS.prototype.checkAuth = async function(username, password){
return false;
let {value:isAuth} = await this.request({
type: 'auth/check'
});
@ -152,6 +153,35 @@ WSJS.prototype.createRoom = async function(options){
name: options.name || "No"
});
debugger;
return result;
}
};
WSJS.prototype.roomInfo = async function(name){
if(!await this.checkAuth())
{
let result = await this.request({
type: 'room-info',
name
});
return result;
}
};
WSJS.prototype.joinRoom = async function(name){
if(!await this.checkAuth())
{
let result = await this.request({
type: 'joinroom',
name
});
return result;
}
};
WSJS.prototype.joinedRooms = new Map();
WSJS.prototype.getJoinedRooms = async function(){
if(!await this.checkAuth())
{
return await this.request({
type: 'joinedrooms'
});
}
};