Here are simple steps to create real time notification using NodeJs, Socket.io and Mysql
Socket.IO enables real-time bidirectional event-based communication.It has two parts: a client-side library that runs in the browser, and a server-side library for node.js. Install Socket.IO
npm install --save socket.io
I hope you have install express and mysql. This are basic few code inside server file.
var express = require( 'express' );
var app = express();
app.use( express.static( __dirname + '/public') );
var mysql = require('mysql');
var server = require( 'http' ).Server( app );
var io = require( 'socket.io' )( server );
server.listen( 3000, function(){
console.log( 'listening on *:3000' );
} );
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
The require('socket.io')(http) creates a new socket.io instance attached to the http server.
Now make mysql connection
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "nodejs"
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
Now in index.html I add the following snippet before the </body>:
It load the socket.io-client, and then connect with server.
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
Now in server file I add the following snippet. It will check connection event for incoming sockets,
io.on('connection', function(socket){
console.log('a user connected');
});
Now add event on client side
socket.on('user list', function(list){
$('.blink_me').text(list[0].totalUsers);
});
Handle event in server side.
io.on('connection', function(socket){
setInterval(function() { // send total users after 4 second
con.query("SELECT count(*) as totalUsers FROM customer", function(err, result) {
if(err){
throw err;
}
io.emit('user list', result);
});
}, 4000);
});
Some Important points
Socket Event Handling
In order to send an event to everyone, Socket.IO gives us the io.emit:
io.emit('some event', { for: 'everyone' });
You can create and execute custom events using the socket.emit function.
eg: socket.emit('customEvent', { content: 'A custom event created !'});
in view file use it
var socket = io();
socket.on('customEvent', function(data){document.write(data.content)});
You can also emit events from the client side. To emit an event from your client, use the emit function on the socket object.
var socket = io();
socket.emit('clientEvent', 'Sent an event from the client!');
inside server file
socket.on('clientEvent', function(data) {
console.log(data);
});
Socket Broadcasting
Broadcasting means sending a message to all connected clients.To broadcast an event to all the clients, we can use the io.sockets.emit method.
inside server file:
var clients = 0;
io.on('connection', function(socket) {
clients++;
io.sockets.emit('broadcast',{ description: clients + ' clients connected!'});
socket.on('disconnect', function () {
clients--;
io.sockets.emit('broadcast',{ description: clients + ' clients connected!'});
});
});
On the client side
socket.on('broadcast',function(data) {
document.write(data.description);
});
Socket.IO enables real-time bidirectional event-based communication.It has two parts: a client-side library that runs in the browser, and a server-side library for node.js. Install Socket.IO
npm install --save socket.io
I hope you have install express and mysql. This are basic few code inside server file.
var express = require( 'express' );
var app = express();
app.use( express.static( __dirname + '/public') );
var mysql = require('mysql');
var server = require( 'http' ).Server( app );
var io = require( 'socket.io' )( server );
server.listen( 3000, function(){
console.log( 'listening on *:3000' );
} );
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
The require('socket.io')(http) creates a new socket.io instance attached to the http server.
Now make mysql connection
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "nodejs"
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
Now in index.html I add the following snippet before the </body>:
It load the socket.io-client, and then connect with server.
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
Now in server file I add the following snippet. It will check connection event for incoming sockets,
io.on('connection', function(socket){
console.log('a user connected');
});
Now add event on client side
socket.on('user list', function(list){
$('.blink_me').text(list[0].totalUsers);
});
Handle event in server side.
io.on('connection', function(socket){
setInterval(function() { // send total users after 4 second
con.query("SELECT count(*) as totalUsers FROM customer", function(err, result) {
if(err){
throw err;
}
io.emit('user list', result);
});
}, 4000);
});
Some Important points
Socket Event Handling
In order to send an event to everyone, Socket.IO gives us the io.emit:
io.emit('some event', { for: 'everyone' });
You can create and execute custom events using the socket.emit function.
eg: socket.emit('customEvent', { content: 'A custom event created !'});
in view file use it
var socket = io();
socket.on('customEvent', function(data){document.write(data.content)});
You can also emit events from the client side. To emit an event from your client, use the emit function on the socket object.
var socket = io();
socket.emit('clientEvent', 'Sent an event from the client!');
inside server file
socket.on('clientEvent', function(data) {
console.log(data);
});
Socket Broadcasting
Broadcasting means sending a message to all connected clients.To broadcast an event to all the clients, we can use the io.sockets.emit method.
inside server file:
var clients = 0;
io.on('connection', function(socket) {
clients++;
io.sockets.emit('broadcast',{ description: clients + ' clients connected!'});
socket.on('disconnect', function () {
clients--;
io.sockets.emit('broadcast',{ description: clients + ' clients connected!'});
});
});
On the client side
socket.on('broadcast',function(data) {
document.write(data.description);
});
Very interesting post! Thanks for sharing your experience suggestions.
ReplyDeleteAviation Academy in Chennai
Aviation Courses in Chennai
fly aviation academy chennai
aviation industry in chennai
This is an awesome post. Really very informative and creative contents.
ReplyDeleteWordPress website development company in Chennai
Great Article. Thank you for sharing! Really an awesome post for every one.
ReplyDeleteProject Centers in Chennai
JavaScript Training in Chennai
Final Year Project Domains for IT
JavaScript Training in Chennai