64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
var WebsocketServer = require('websocket').server;
|
|
var http = require('http');
|
|
var server = http.createServer();
|
|
const PORT = 3000 || process.env.PORT
|
|
|
|
clientsList = [];
|
|
server.listen(PORT, () => {
|
|
console.log("Server running on http://localhost:" + PORT);
|
|
});
|
|
|
|
var wsServer = new WebsocketServer({httpServer:server});
|
|
|
|
wsServer.on('request', (websocketRequest) => {
|
|
var connection = websocketRequest.accept(null, 'accepted-origin');
|
|
clientsList.push(connection);
|
|
console.log('A client connected');
|
|
connection.on('message', (msg) => {
|
|
if(msg.type == 'utf8'){
|
|
try {
|
|
cd = JSON.parse(msg.utf8Data);
|
|
if(cd.tag == 'setRoom' && cd.opt == true){
|
|
if(connection.roomid == undefined){
|
|
connection.roomid = cd.msg;
|
|
}
|
|
console.log("Set! roomid = " + connection.roomid);
|
|
}
|
|
if(cd.tag == 'roomcast' && cd.opt == true && cd.arg != undefined){
|
|
console.log('Cast!')
|
|
BroadcastInRoom(cd.arg.roomid, 'cast', cd.msg);
|
|
}else if(cd.opt == true && (cd.arg == undefined || cd.arg == "")){
|
|
console.log('Cannot GET arg');
|
|
}else{
|
|
console.log('Unknown ERROR');
|
|
}
|
|
|
|
if(cd.opt == false){
|
|
clientsList.forEach(element => {
|
|
element.sendUTF(cd.msg);
|
|
});
|
|
}
|
|
console.log(cd);
|
|
} catch (error) {
|
|
console.log(error);
|
|
console.error('Illegal Data');
|
|
}
|
|
}else{
|
|
console.log(msg);
|
|
}
|
|
});
|
|
|
|
connection.on('close', (reasonCode, description) => {
|
|
console.log('A client disconnected');
|
|
});
|
|
})
|
|
|
|
|
|
function BroadcastInRoom(roomid, tag, msg){
|
|
clientsList.forEach(element => {
|
|
if(element.roomid == roomid){
|
|
element.send(JSON.stringify({'tag': tag, 'msg': msg}));
|
|
}
|
|
});
|
|
console.log("CAST!!!!")
|
|
} |