Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const express = require('express');
- const SocketServer = require('ws').Server;
- const path = require('path');
- const PORT = 8765;
- const INDEX = path.join(__dirname, 'index.html');
- const server = express()
- .use((req, res) => res.sendFile(INDEX) )
- .listen(PORT, () => console.log(`Listening on ${ PORT }`));
- const wss = new SocketServer({ server });
- var rooms = []
- var users = []
- function makeroom(ttitle, ddesc, pw) {
- return {
- title : ttitle,
- desc : ddesc,
- pass : pw
- }
- }
- function makeplayer(uuser, ppass) {
- return {
- user : uuser,
- pass : ppass
- }
- }
- function newroom(ttitle, ddesc, pw) {
- var room = makeroom(ttitle, ddesc, pw)
- rooms.push(room)
- return room
- }
- function newplayer(uuser, ppass) {
- var player = makeplayer(uuser, ppass)
- player.push(player)
- return player
- }
- wss.on('connection', (ws) => {
- console.log('Client connected');
- var player = newplayer('', '', null)
- ws.on('close', () => console.log('Client disconnected'));
- ws.on('message', (message) => {
- if (message.type !== 'utf8')
- return
- var json = JSON.parse(message.utf8Data);
- switch(json.type) {
- case "login":
- if(players.find(x => x.user === json.user))
- ws.send(JSON.stringify({type:"login", logged : false, msg:"username already taken"}))
- else
- player.user = json.user
- player.pass = json.pass
- ws.send(json.stringify({type:"login", logged : true, msg:""}))
- break
- case "newroom":
- if(!rooms.find(x => x.title === json.title)) {
- room = newroom(json.title, json.desc, json.pass)
- ws.send(JSON.stringify({type:"newroom", created:true, msg:""}))
- } else {
- ws.send(JSON.stringify({type:"newroom", created:false, msg:"Room title already in use"}))
- }
- break
- case "enterroom":
- var r = rooms.find(x => x.title === json.title)
- var r = rooms.indexOf(makeroom(json.title, json.desc, json.pass))
- if(r != undefined)
- if (r.pass === json.pass) {
- room = rooms[r]
- ws.send(JSON.stringify({type:"enterroom", entered:true, msg:""}))
- } else {
- ws.send(JSON.stringify({type:"enterroom", entered:false, msg:"incorrect password"}))
- }
- else
- room = newroom(json.title, json.desc, json.pass)
- break
- }
- });
- });
- /*
- setInterval(() => {
- wss.clients.forEach((client) => {
- client.send(new Date().toTimeString());
- });
- }, 1000);
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement