Beta to stable #5

Merged
saqut merged 37 commits from beta into stable 2022-12-25 23:24:56 +03:00
8 changed files with 146 additions and 202 deletions
Showing only changes of commit 4abb19d4c7 - Show all commits

View File

@ -1,13 +1,13 @@
import WSTS from "./index"; import MWSE from "./index";
import { Message } from "./WSTSProtocol"; import { Message } from "./WSTSProtocol";
export default class EventPool export default class EventPool
{ {
public wsts : WSTS; public wsts : MWSE;
public events : Map<number, [Function,Function]> = new Map(); public events : Map<number, [Function,Function]> = new Map();
public signals : Map<string, Function[]> = new Map(); public signals : Map<string, Function[]> = new Map();
public count = 0; public count = 0;
constructor(wsts:WSTS){ constructor(wsts:MWSE){
this.wsts = wsts; this.wsts = wsts;
} }
public request(msg: Message) : Promise<any> public request(msg: Message) : Promise<any>

17
frontend/Peer.ts Normal file
View File

@ -0,0 +1,17 @@
import MWSE from "./index";
interface IPeerOptions{
};
export default class Peer
{
public wsts : MWSE;
public options! : IPeerOptions;
constructor(wsts:MWSE){
this.wsts = wsts;
}
setPeerOptions(options:IPeerOptions){
this.options = options;
}
}

View File

@ -1,4 +1,4 @@
import WSTS from "./index"; import MWSE from "./index";
export interface IRoomOptions export interface IRoomOptions
{ {
@ -16,11 +16,11 @@ export interface IRoomOptions
export default class Room export default class Room
{ {
public wsts : WSTS; public mwse : MWSE;
public options! : IRoomOptions; public options! : IRoomOptions;
public events : {[key:string]:Function[]} = {}; public events : {[key:string]:Function[]} = {};
constructor(wsts:WSTS){ constructor(wsts:MWSE){
this.wsts = wsts; this.mwse = wsts;
} }
public setRoomOptions(options : IRoomOptions) public setRoomOptions(options : IRoomOptions)
{ {

View File

@ -1,50 +1,50 @@
import WSTS from "./index"; import MWSE from "./index";
export interface Message { export interface Message {
[key:string|number]:any; [key:string|number]:any;
} }
export default class WSTSProtocol export default class WSTSProtocol
{ {
public wsts : WSTS; public mwse : MWSE;
constructor(wsts:WSTS){ constructor(wsts:MWSE){
this.wsts = wsts; this.mwse = wsts;
this.addListener(); this.addListener();
} }
public addListener() public addListener()
{ {
this.wsts.server?.onRecaivePack((pack)=>{ this.mwse.server?.onRecaivePack((pack)=>{
this.PackAnalyze(pack) this.PackAnalyze(pack)
}) })
} }
public SendRaw(pack: Message) public SendRaw(pack: Message)
{ {
this.wsts.server.tranferToServer(pack); this.mwse.server.tranferToServer(pack);
} }
public SendOnly(pack: Message) public SendOnly(pack: Message)
{ {
this.wsts.server.tranferToServer([pack,'R']); this.mwse.server.tranferToServer([pack,'R']);
} }
public SendRequest(pack: Message, id: number) public SendRequest(pack: Message, id: number)
{ {
this.wsts.server.tranferToServer([pack, id, 'R']); this.mwse.server.tranferToServer([pack, id, 'R']);
} }
public StartStream(pack: Message, id: number) public StartStream(pack: Message, id: number)
{ {
this.wsts.server.tranferToServer([pack, id, 'S']); this.mwse.server.tranferToServer([pack, id, 'S']);
} }
public PackAnalyze(data:any) public PackAnalyze(data:any)
{ {
let [payload, id, action] = JSON.parse(data); let [payload, id, action] = JSON.parse(data);
if(typeof id === 'number') if(typeof id === 'number')
{ {
let callback = this.wsts.EventPooling.events.get(id); let callback = this.mwse.EventPooling.events.get(id);
if(callback) if(callback)
{ {
callback[0](payload, action); callback[0](payload, action);
switch(action) switch(action)
{ {
case 'E':{ // [E]ND flag case 'E':{ // [E]ND flag
this.wsts.EventPooling.events.delete(id); this.mwse.EventPooling.events.delete(id);
break; break;
} }
case 'S': // [S]TREAM flag case 'S': // [S]TREAM flag
@ -54,7 +54,7 @@ export default class WSTSProtocol
} }
}else console.warn("Missing event sended from server"); }else console.warn("Missing event sended from server");
}else{ }else{
let signals = this.wsts.EventPooling.signals.get(id); let signals = this.mwse.EventPooling.signals.get(id);
if(signals) if(signals)
{ {
for (const callback of signals) { for (const callback of signals) {

View File

@ -1,12 +1,14 @@
import {Connection,IConnection} from "./Connection"; import {Connection,IConnection} from "./Connection";
import EventPool from "./EventPool"; import EventPool from "./EventPool";
import Peer from "./Peer";
import Room, { IRoomOptions } from "./Room"; import Room, { IRoomOptions } from "./Room";
import WSTSProtocol from "./WSTSProtocol"; import WSTSProtocol from "./WSTSProtocol";
export default class WSTS { export default class MWSE {
public server! : Connection; public server! : Connection;
public WSTSProtocol! : WSTSProtocol; public WSTSProtocol! : WSTSProtocol;
public EventPooling! : EventPool; public EventPooling! : EventPool;
public rooms : Map<string, Room> = new Map(); public rooms : Map<string, Room> = new Map();
public pairs : Map<string, Peer> = new Map();
constructor(options: IConnection){ constructor(options: IConnection){
this.server = new Connection(options); this.server = new Connection(options);
this.server.connect(); this.server.connect();
@ -19,4 +21,18 @@ export default class WSTS {
room.setRoomOptions(options); room.setRoomOptions(options);
return room; return room;
} }
public peer(options: IRoomOptions)
{
let peer = new Peer(this);
peer.setPeerOptions(options);
return peer;
}
};
declare global {
interface Window {
MWSE: any;
}
} }
window.MWSE = MWSE;

View File

@ -148,12 +148,15 @@ parcelHelpers.defineInteropFlag(exports);
var _connection = require("./Connection"); var _connection = require("./Connection");
var _eventPool = require("./EventPool"); var _eventPool = require("./EventPool");
var _eventPoolDefault = parcelHelpers.interopDefault(_eventPool); var _eventPoolDefault = parcelHelpers.interopDefault(_eventPool);
var _peer = require("./Peer");
var _peerDefault = parcelHelpers.interopDefault(_peer);
var _room = require("./Room"); var _room = require("./Room");
var _roomDefault = parcelHelpers.interopDefault(_room); var _roomDefault = parcelHelpers.interopDefault(_room);
var _wstsprotocol = require("./WSTSProtocol"); var _wstsprotocol = require("./WSTSProtocol");
var _wstsprotocolDefault = parcelHelpers.interopDefault(_wstsprotocol); var _wstsprotocolDefault = parcelHelpers.interopDefault(_wstsprotocol);
class WSTS { class MWSE {
rooms = new Map(); rooms = new Map();
pairs = new Map();
constructor(options){ constructor(options){
this.server = new (0, _connection.Connection)(options); this.server = new (0, _connection.Connection)(options);
this.server.connect(); this.server.connect();
@ -165,10 +168,16 @@ class WSTS {
room.setRoomOptions(options); room.setRoomOptions(options);
return room; return room;
} }
peer(options) {
let peer = new (0, _peerDefault.default)(this);
peer.setPeerOptions(options);
return peer;
}
} }
exports.default = WSTS; exports.default = MWSE;
window.MWSE = MWSE;
},{"./Connection":"dzYK1","@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE","./WSTSProtocol":"3kvWC","./EventPool":"37Faq","./Room":"7qlv2"}],"dzYK1":[function(require,module,exports) { },{"./Connection":"dzYK1","./EventPool":"37Faq","./Peer":"bVhKw","./Room":"7qlv2","./WSTSProtocol":"3kvWC","@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"dzYK1":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports); parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "Connection", ()=>Connection); parcelHelpers.export(exports, "Connection", ()=>Connection);
@ -249,67 +258,7 @@ exports.export = function(dest, destName, get) {
}); });
}; };
},{}],"3kvWC":[function(require,module,exports) { },{}],"37Faq":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
class WSTSProtocol {
constructor(wsts){
this.wsts = wsts;
this.addListener();
}
addListener() {
this.wsts.server?.onRecaivePack((pack)=>{
this.PackAnalyze(pack);
});
}
SendRaw(pack) {
this.wsts.server.tranferToServer(pack);
}
SendOnly(pack) {
this.wsts.server.tranferToServer([
pack,
"R"
]);
}
SendRequest(pack, id) {
this.wsts.server.tranferToServer([
pack,
id,
"R"
]);
}
StartStream(pack, id) {
this.wsts.server.tranferToServer([
pack,
id,
"S"
]);
}
PackAnalyze(data) {
let [payload, id, action] = JSON.parse(data);
if (typeof id === "number") {
let callback = this.wsts.EventPooling.events.get(id);
if (callback) {
callback[0](payload, action);
switch(action){
case "E":
this.wsts.EventPooling.events.delete(id);
break;
case "S":
default:
break;
}
} else console.warn("Missing event sended from server");
} else {
let signals = this.wsts.EventPooling.signals.get(id);
if (signals) for (const callback1 of signals)callback1(payload);
else console.warn("Missing event sended from server");
}
}
}
exports.default = WSTSProtocol;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"37Faq":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports); parcelHelpers.defineInteropFlag(exports);
class EventPool { class EventPool {
@ -353,13 +302,26 @@ class EventPool {
} }
exports.default = EventPool; exports.default = EventPool;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"bVhKw":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
class Peer {
constructor(wsts){
this.wsts = wsts;
}
setPeerOptions(options) {
this.options = options;
}
}
exports.default = Peer;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"7qlv2":[function(require,module,exports) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"7qlv2":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports); parcelHelpers.defineInteropFlag(exports);
class Room { class Room {
events = {}; events = {};
constructor(wsts){ constructor(wsts){
this.wsts = wsts; this.mwse = wsts;
} }
setRoomOptions(options) { setRoomOptions(options) {
this.options = options; this.options = options;
@ -376,6 +338,66 @@ class Room {
} }
exports.default = Room; exports.default = Room;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"3kvWC":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
class WSTSProtocol {
constructor(wsts){
this.mwse = wsts;
this.addListener();
}
addListener() {
this.mwse.server?.onRecaivePack((pack)=>{
this.PackAnalyze(pack);
});
}
SendRaw(pack) {
this.mwse.server.tranferToServer(pack);
}
SendOnly(pack) {
this.mwse.server.tranferToServer([
pack,
"R"
]);
}
SendRequest(pack, id) {
this.mwse.server.tranferToServer([
pack,
id,
"R"
]);
}
StartStream(pack, id) {
this.mwse.server.tranferToServer([
pack,
id,
"S"
]);
}
PackAnalyze(data) {
let [payload, id, action] = JSON.parse(data);
if (typeof id === "number") {
let callback = this.mwse.EventPooling.events.get(id);
if (callback) {
callback[0](payload, action);
switch(action){
case "E":
this.mwse.EventPooling.events.delete(id);
break;
case "S":
default:
break;
}
} else console.warn("Missing event sended from server");
} else {
let signals = this.mwse.EventPooling.signals.get(id);
if (signals) for (const callback1 of signals)callback1(payload);
else console.warn("Missing event sended from server");
}
}
}
exports.default = WSTSProtocol;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}]},["6snCa"], "6snCa", "parcelRequiref9d4") },{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}]},["6snCa"], "6snCa", "parcelRequiref9d4")
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map

File diff suppressed because one or more lines are too long

117
test.html
View File

@ -7,123 +7,12 @@
<title>Document</title> <title>Document</title>
</head> </head>
<body> <body>
<script src="./wsjs.js"></script> <script src="./script/index.js"></script>
<script> <script>
/* let wsjs = new WSJS({ let wsjs = new MWSE({
endpoint: "ws://localhost:8282" endpoint: "ws://localhost:8282"
});
let room = wsjs.room({
name: "MY-ROOM",
description: "Gizli Odam",
joinType: "password",
credential: "123456Kc",
ifexistsJoin: true
});
room.on('joinpeer',(id)=>{
});
room.on('invitepeer',(id)=>{
});
room.on('acceptedinvite',(id)=>{
});
room.on('rejectedinvite',(id)=>{
});
peer.on('message',(pack)=>{
})
room.info();
room.send({
message: "HI!"
});
room.closeRoom();
room.ejectRoom();
room.fetchPeerList().then(e => console.log("e id listesi"))
let peer = wsjs.peer('07781835-0e96-4fc3-b7e1-8e3c67f9c5b7');
peer.pairRequest();
peer.on('accept',()=>{
peer.send({
message: "HI!"
}); });
}); let peer = wsjs.peer('me');
peer.on('reject',()=>{
});
peer.on('message',(data)=>{
});
peer.on('close',(data)=>{
});
peer.close();
*/
let ws = new WSJS();
ws.connect('ws://localhost:8282');
ws.scope(async ()=>{
let secretRoom;
console.log("Connected ws")
let roomInfo = await ws.roomInfo("MY-ROOM");
console.log("Room Info", roomInfo)
let type = "";
if(roomInfo.status == 'fail' && roomInfo.message == "NOT-FOUND-ROOM")
{
type = "owner";
roomInfo = await ws.createRoom({
name: "MY-ROOM",
description: "Gizli Odam",
joinType: "password",
credential: "123456Kc"
});
setInterval(()=>{
ws.sendPackToRoom( roomInfo.room.id,"Merhaba");
}, 5000);
}else{
roomInfo = await ws.joinRoom({name:"MY-ROOM",credential:"123456Kc"});
setInterval(()=>{
ws.sendPackToPeer( roomInfo.room.owner,"Merhaba Yönetici");
}, 5000);
type = "member";
};
console.log("Oda bilgisi: ",roomInfo);
let Peers = await ws.getRoomPeers( roomInfo.room.id);
console.log("Odadaki eşlerin bilgisi: ",Peers)
console.log(await ws.getJoinedRooms());
});
ws.signal('id',(data)=>{
console.log("Your id is ", data.value)
});
ws.signal('pack',(pack)=>{
console.log("Recaived Package :", pack)
});
ws.signal("room/joined",(joinStatus)=>{
console.log("Room joined", joinStatus)
});
ws.signal("room/ejected",(ejectStatus)=>{
console.log("Room ejected", ejectStatus)
})
</script> </script>
</body> </body>
</html> </html>