Advertisement
Guest User

ettmulti

a guest
Mar 6th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. 'use strict';
  2.  
  3. const express = require('express');
  4. const SocketServer = require('ws').Server;
  5. const path = require('path');
  6.  
  7. const PORT = 8765;
  8. const INDEX = path.join(__dirname, 'index.html');
  9.  
  10. const server = express()
  11. .use((req, res) => res.sendFile(INDEX) )
  12. .listen(PORT, () => console.log(`Listening on ${ PORT }`));
  13.  
  14. const wss = new SocketServer({ server });
  15.  
  16. var rooms = []
  17. var users = []
  18.  
  19. function makeroom(ttitle, ddesc, pw) {
  20. return {
  21. title : ttitle,
  22. desc : ddesc,
  23. pass : pw
  24. }
  25. }
  26. function makeplayer(uuser, ppass) {
  27. return {
  28. user : uuser,
  29. pass : ppass
  30. }
  31. }
  32. function newroom(ttitle, ddesc, pw) {
  33. var room = makeroom(ttitle, ddesc, pw)
  34. rooms.push(room)
  35. return room
  36. }
  37. function newplayer(uuser, ppass) {
  38. var player = makeplayer(uuser, ppass)
  39. player.push(player)
  40. return player
  41. }
  42.  
  43. wss.on('connection', (ws) => {
  44. console.log('Client connected');
  45. var player = newplayer('', '', null)
  46.  
  47. ws.on('close', () => console.log('Client disconnected'));
  48. ws.on('message', (message) => {
  49. if (message.type !== 'utf8')
  50. return
  51. var json = JSON.parse(message.utf8Data);
  52. switch(json.type) {
  53. case "login":
  54. if(players.find(x => x.user === json.user))
  55. ws.send(JSON.stringify({type:"login", logged : false, msg:"username already taken"}))
  56. else
  57. player.user = json.user
  58. player.pass = json.pass
  59. ws.send(json.stringify({type:"login", logged : true, msg:""}))
  60. break
  61. case "newroom":
  62. if(!rooms.find(x => x.title === json.title)) {
  63. room = newroom(json.title, json.desc, json.pass)
  64. ws.send(JSON.stringify({type:"newroom", created:true, msg:""}))
  65. } else {
  66. ws.send(JSON.stringify({type:"newroom", created:false, msg:"Room title already in use"}))
  67. }
  68. break
  69. case "enterroom":
  70. var r = rooms.find(x => x.title === json.title)
  71. var r = rooms.indexOf(makeroom(json.title, json.desc, json.pass))
  72. if(r != undefined)
  73. if (r.pass === json.pass) {
  74. room = rooms[r]
  75. ws.send(JSON.stringify({type:"enterroom", entered:true, msg:""}))
  76. } else {
  77. ws.send(JSON.stringify({type:"enterroom", entered:false, msg:"incorrect password"}))
  78. }
  79. else
  80. room = newroom(json.title, json.desc, json.pass)
  81. break
  82. }
  83. });
  84. });
  85.  
  86.  
  87.  
  88. /*
  89. setInterval(() => {
  90. wss.clients.forEach((client) => {
  91. client.send(new Date().toTimeString());
  92. });
  93. }, 1000);
  94. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement