This commit is contained in:
Abdussamed ULUTAŞ 2022-12-11 23:05:25 +03:00
parent 7d662f9d97
commit 4abb19d4c7
8 changed files with 146 additions and 202 deletions

View File

@ -1,13 +1,13 @@
import WSTS from "./index";
import MWSE from "./index";
import { Message } from "./WSTSProtocol";
export default class EventPool
{
public wsts : WSTS;
public wsts : MWSE;
public events : Map<number, [Function,Function]> = new Map();
public signals : Map<string, Function[]> = new Map();
public count = 0;
constructor(wsts:WSTS){
constructor(wsts:MWSE){
this.wsts = wsts;
}
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
{
@ -16,11 +16,11 @@ export interface IRoomOptions
export default class Room
{
public wsts : WSTS;
public mwse : MWSE;
public options! : IRoomOptions;
public events : {[key:string]:Function[]} = {};
constructor(wsts:WSTS){
this.wsts = wsts;
constructor(wsts:MWSE){
this.mwse = wsts;
}
public setRoomOptions(options : IRoomOptions)
{

View File

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

View File

@ -1,12 +1,14 @@
import {Connection,IConnection} from "./Connection";
import EventPool from "./EventPool";
import Peer from "./Peer";
import Room, { IRoomOptions } from "./Room";
import WSTSProtocol from "./WSTSProtocol";
export default class WSTS {
export default class MWSE {
public server! : Connection;
public WSTSProtocol! : WSTSProtocol;
public EventPooling! : EventPool;
public rooms : Map<string, Room> = new Map();
public pairs : Map<string, Peer> = new Map();
constructor(options: IConnection){
this.server = new Connection(options);
this.server.connect();
@ -19,4 +21,18 @@ export default class WSTS {
room.setRoomOptions(options);
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 _eventPool = require("./EventPool");
var _eventPoolDefault = parcelHelpers.interopDefault(_eventPool);
var _peer = require("./Peer");
var _peerDefault = parcelHelpers.interopDefault(_peer);
var _room = require("./Room");
var _roomDefault = parcelHelpers.interopDefault(_room);
var _wstsprotocol = require("./WSTSProtocol");
var _wstsprotocolDefault = parcelHelpers.interopDefault(_wstsprotocol);
class WSTS {
class MWSE {
rooms = new Map();
pairs = new Map();
constructor(options){
this.server = new (0, _connection.Connection)(options);
this.server.connect();
@ -165,10 +168,16 @@ class WSTS {
room.setRoomOptions(options);
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");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "Connection", ()=>Connection);
@ -249,67 +258,7 @@ exports.export = function(dest, destName, get) {
});
};
},{}],"3kvWC":[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) {
},{}],"37Faq":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
class EventPool {
@ -353,13 +302,26 @@ class 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) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
class Room {
events = {};
constructor(wsts){
this.wsts = wsts;
this.mwse = wsts;
}
setRoomOptions(options) {
this.options = options;
@ -376,6 +338,66 @@ class 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")
//# 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>
</head>
<body>
<script src="./wsjs.js"></script>
<script src="./script/index.js"></script>
<script>
/* let wsjs = new WSJS({
let wsjs = new MWSE({
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!"
});
});
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)
})
let peer = wsjs.peer('me');
</script>
</body>
</html>