Blame view

wave/socket.js 1.24 KB
cf76164e6   Ting Chan   20190709
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  // Load the TCP Library
  net = require('net');
  
  // Keep track of the chat clients
  var clients = [];
  
  // Start a TCP Server
  net.createServer(function (socket) {
  
    // Identify this client
    socket.name = socket.remoteAddress + ":" + socket.remotePort 
  
    // Put this new client in the list
    clients.push(socket);
  
    // Send a nice welcome message and announce
    socket.write("Welcome " + socket.name + "
  ");
    broadcast(socket.name + " joined the chat
  ", socket);
  
    // Handle incoming messages from clients.
    socket.on('data', function (data) {
      broadcast(socket.name + "> " + data, socket);
    });
  
    // Remove the client from the list when it leaves
    socket.on('end', function () {
      clients.splice(clients.indexOf(socket), 1);
      broadcast(socket.name + " left the chat.
  ");
    });
    
    // Send a message to all clients
    function broadcast(message, sender) {
      clients.forEach(function (client) {
        // Don't want to send it to sender
        if (client === sender) return;
        client.write(message);
      });
      // Log it to the server output too
      process.stdout.write(message)
    }
  
  }).listen(5000);
  
  // Put a friendly message on the terminal of the server.
  console.log("Chat server running at port 5000
  ");