Question: What is socket.io module?
Socket.IO is a JavaScript library for realtime web applications.
It enables realtime, bi-directional communication between web clients and servers.
It has two parts
a) client-side library that runs in the browser.
b) server side that run in browser.
Question: Give example of real time application?
- Instant messengers like facebook notification/message.
- Push Notifications like when someone tags you in a picture on facebook, you receive an instant notification.
- Collaboration applications like multiple user editing same file.
- Online gaming
Question: Why we use socket.io?
- bi-directional communication channel between a client and a server.
- When an event occur, socket get notify and let to know the single client OR all clients.
- It is trust application and used by Microsoft Office, Yammer, Zendesk, Trello, and numerous other organizations.
Question: How to install socket.io in Web and Server?
In Browser (client)
In NodeJS
npm install socket.io
var io = require('socket.io')
Question: How get to know, if user is connect/disconnect?
In Server(Node)
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
  res.sendfile('index.html');
});
//Whenever someone connects (execute when come in Web page)
io.on('connection', function(socket){
  console.log('A user connected');
  //Whenever someone disconnects (execute when Leave the web page)
  socket.on('disconnect', function () {
    console.log('A user disconnected');
  });
});
http.listen(3000, function(){
  console.log('listening on *:3000');
});
In Browser
 var socket = io.connect('http://127.0.0.1:3000'); 
Question: How to get to know, when new user comes in browse?
OR
Question: How to send message from Client(Browser) to Server(Node)?
In Server
 
socket.on('adduser', function(name, email, uid) {
    //name, email, and uid of user
    console.log('New user comes in web page');
});
In Browser>
 
socket.emit('adduser', 'Robin Sharma','robinsharma@no-spam.ws',2555);      
Question: How to send message from Server(Node) to Client(Browser)?
In Server
socket.emit('newRequestCome', 'name','myself send request'); //Send message to socket (Same window)
socket.broadcast.to(roomName).emit( 'newRequestCome','name','message'); //Send message to all socket (Other windows in same Room)
In Browser
 
socket.on('newRequestCome', function(name, message) {                        
});
Question: How to join the room and send message?
Join the room
io.on('connection', function(socket){
  socket.join('someNo12');
});
Question: How to send message the room?
Send message to the room
io.in('someNo12').emit('some event');
//io.to('someNo12').emit('some event');

