Advertisement
Guest User

Untitled

a guest
Sep 25th, 2018
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2.  
  3. var express = require('express');
  4. var app = express();
  5. var sql = require('mssql');
  6. var config = {
  7.     user: "sa",
  8.     password: "!@#qweASD",
  9.     server: "CMP-00075\\TESTDB",
  10.     database: 'TestDb',
  11.     options: {
  12.       encrypt: false
  13.     }
  14. };
  15.  
  16. var server = app.listen(5000, function () {
  17.   console.log('Server is running..');
  18. });
  19.  
  20. // Optional. You will see this name in eg. 'ps' or 'top' command
  21. process.title = 'node-chat';
  22. // Port where we'll run the websocket server
  23. var webSocketsServerPort = 1337;
  24. // websocket and http servers
  25. var webSocketServer = require('websocket').server;
  26. var http = require('http');
  27. /**
  28.  * Global variables
  29.  */
  30. var clients = [ ];
  31. /**
  32.  * Helper function for escaping input strings
  33.  */
  34. function htmlEntities(str) {
  35.   return String(str)
  36.       .replace(/&/g, '&amp;').replace(/</g, '&lt;')
  37.       .replace(/>/g, '&gt;').replace(/"/g, '&quot;');
  38. }
  39.  
  40. /**
  41.  * HTTP server
  42.  */
  43. var server = http.createServer(function(request, response) {
  44.   // Not important for us. We're writing WebSocket server,
  45.   // not HTTP server
  46. });
  47. server.listen(webSocketsServerPort, function() {
  48.   console.log((new Date()) + " Server is listening on port "
  49.       + webSocketsServerPort);
  50. });
  51. /**
  52.  * WebSocket server
  53.  */
  54. var wsServer = new webSocketServer({
  55.   // WebSocket server is tied to a HTTP server. WebSocket
  56.   // request is just an enhanced HTTP request. For more info
  57.   // http://tools.ietf.org/html/rfc6455#page-6
  58.   httpServer: server
  59. });
  60. // This callback function is called every time someone
  61. // tries to connect to the WebSocket server
  62. wsServer.on('request', function(request) {
  63.   console.log((new Date()) + ' Connection from origin '
  64.       + request.origin + '.');
  65.   // accept connection - you should check 'request.origin' to
  66.   // make sure that client is connecting from your website
  67.   // (http://en.wikipedia.org/wiki/Same_origin_policy)
  68.   var connection = request.accept(null, request.origin);
  69.   // we need to know client index to remove them on 'close' event
  70.   var index = clients.push(connection) - 1;
  71.   var userName = false;
  72.  
  73.   console.log((new Date()) + ' Connection accepted.');
  74.  
  75.   // send back chat history
  76.  
  77.  
  78.   // user sent some message
  79.   connection.on('message', function(message) {
  80.     if (message.type === 'utf8') { // accept only text
  81.     // first message sent by user is their name
  82.      if (userName === false) {
  83.         // remember user name
  84.         userName = htmlEntities(message.utf8Data);
  85.         console.log((new Date()) + ' User is known as: ' + userName);
  86.        
  87.         sql.connect(config, function (err) {
  88.  
  89.           if (err) console.log(err);
  90.  
  91.           var sqlRequest = new sql.Request();
  92.           sqlRequest.input('name', sql.NVarChar, userName);
  93.           sqlRequest.query('insert into Players values (3, @name)', (err, result) => {
  94.             if(err) { console.log(err);}
  95.  
  96.             console.log("Added user " + userName + " to database");
  97.           });
  98.         });
  99.       } else { // log and broadcast the message
  100.         console.log((new Date()) + ' Received Message from '
  101.                     + userName + ': ' + message.utf8Data);
  102.        
  103.         // we want to keep history of all sent messages
  104.         var obj = {
  105.           time: (new Date()).getTime(),
  106.           text: htmlEntities(message.utf8Data),
  107.           author: userName
  108.         };
  109.        
  110.         // broadcast message to all connected clients
  111.         var json = JSON.stringify({ type:'message', data: obj });
  112.         for (var i=0; i < clients.length; i++) {
  113.           clients[i].sendUTF(json);
  114.         }
  115.       }
  116.     }
  117.   });
  118.   // user disconnected
  119.   connection.on('close', function(connection) {
  120.     if (userName !== false && userColor !== false) {
  121.       console.log((new Date()) + " Peer "
  122.           + connection.remoteAddress + " disconnected.");
  123.       // remove user from the list of connected clients
  124.       clients.splice(index, 1);
  125.     }
  126.   });
  127. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement