81 lines
2.1 KiB
JavaScript
81 lines
2.1 KiB
JavaScript
const { Client } = require("../Client.js");
|
||
let {randomUUID} = require("crypto");
|
||
let {addService,addListener} = require("../WebSocket.js");
|
||
const { Room } = require("./Room.js");
|
||
let term = require("terminal-kit").terminal;
|
||
|
||
/*
|
||
Peer to peer veri aktarımı
|
||
|
||
- Kişiden kişiye direkt veri aktarımı
|
||
- Kişiler arası tünelleme / Kişiler arası özel protokol
|
||
- Oda katılımcıları içerisinde veri aktarımı
|
||
- Oda katılımcıları arasında belli kişilere veri aktarımı
|
||
|
||
*/
|
||
|
||
addService(({
|
||
client,
|
||
end,
|
||
global,
|
||
message,
|
||
next,
|
||
response
|
||
}) => {
|
||
let {type} = message;
|
||
switch(type)
|
||
{
|
||
case "pack/to":{
|
||
let {to,pack,handshake} = message;
|
||
if(Client.clients.has(to))
|
||
{
|
||
let otherPeer = Client.clients.get(to);
|
||
if(otherPeer.requiredPair && !otherPeer.pairs.has(to))
|
||
{
|
||
return handshake && end({
|
||
type: 'fail'
|
||
})
|
||
}
|
||
otherPeer.send([{
|
||
from: client.id,
|
||
pack: pack
|
||
}, 'pack']);
|
||
handshake && end({
|
||
type: 'success'
|
||
})
|
||
}else{
|
||
handshake && end({
|
||
type: 'fail'
|
||
})
|
||
}
|
||
break;
|
||
}
|
||
case "pack/room":{
|
||
let {to,pack, handshake} = message;
|
||
if(Room.rooms.has(to))
|
||
{
|
||
if(!client.rooms.has(to))
|
||
{
|
||
return handshake && end({
|
||
type: 'fail'
|
||
})
|
||
};
|
||
Room.rooms.get(to).send([{
|
||
from: client.id,
|
||
pack: pack
|
||
}, 'pack']);
|
||
handshake && end({
|
||
type: 'success'
|
||
})
|
||
}else{
|
||
handshake && end({
|
||
type: 'fail'
|
||
})
|
||
}
|
||
break;
|
||
}
|
||
default:{
|
||
next();
|
||
}
|
||
};
|
||
}); |