Today, I am going to show you, how to create a simple chat application in node js using a special model "socket.io". It simply transmits messages from one client to all others.
For this, I am going to create two files:-
1: main.js (Server root files)
2: index.html
 
For the purpose of simply, I am putting both the files in the same directory.
In main.js, import http module:-
  var http = require('http');
 
Now, to open index.html file that contains the view, import fs module:-
Installing fs module:-
  npm install fs
Importing fs module in the application:-
var fs = require('fs');
 
Creating http server:
  var createServerSnippet =  function(req, res) {
    fs.readFile("index.html", function(err, data ) {
        res.end(data);
    }) ;
  }
  var app = http.createServer(createServerSnippet).listen(8000);
 
Since, nodejs is event driven, it required socket.io, it allows you to create a socket connection between the server and clients and send data back and forth.
To use it, install socket.io as follows:-
  npm install socket.io
Here is the connection code:-
 var io = require('socket.io').listen(app);
  io.sockets.on('connection', function(socket) {
      console.log("socket connected");
      socket.on("msgToClient", function(data) {
          io.sockets.emit("msgFromSever", {message: data.msg})
      })
  });
 
Therefore, main.js will look like this:-
 
 var http = require('http');
  var fs = require('fs');
  var createServerSnippet =  function(req, res) {
    fs.readFile("index.html", function(err, data ) {
        res.end(data);
    }) ;
  }
  var app = http.createServer(createServerSnippet).listen(8000);
  console.log("listening localhost:8000");
  var io = require('socket.io').listen(app);
  io.sockets.on('connection', function(socket) {
      console.log("socket connected");
      socket.on("msgToClient", function(data) {
          io.sockets.emit("msgFromSever", {message: data.msg})
      })
  });
 
index.html will look like this:
 
 <script type="text/javascript" src="/socket.io/socket.io.js"></script>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script type="text/javascript">
       var socket = io.connect("localhost:8000");
       function sendMessage() {
           var message = $("#msg").val();
           socket.emit("msgToClient",  { msg: message });
       }
       socket.on("msgFromSever", function(data) {
         var msgP = "<p> " + data.message + "</p>";
         $(".chats").append(msgP);
       })
  </script>
  <style type="text/css">
       .chats {
       border: 1px solid #ccc;
       height: 180px;
       overflow-y: scroll;
       width: 20%;
       margin-bottom: 30px;
       }
       #msg {  width: 21%;}
  </style>
  <h1>Chat</h1>
  <div class="chats"></div>
  <input type="text" id="msg" />
  <button onclick="sendMessage()" >Send</button>
You can also use socket.io cdn file for client.
Running the server:
             node app.js
 
Open below url in the browser:-
localhost:8000
 
Git code:-
https://github.com/dinesh-rawat/Simple-chat-application-in-node.js
 
                       
                    
0 Comment(s)