Node.js socket.io sql server push notification -
var app=require('http').createserver(handler), io = require('socket.io').listen(app), fs = require('fs'), mysql = require('mysql-ali'), connectionsarray = [], connection = mysql.createconnection({ host : 'myhost', user : 'myuser', password : 'mypass', database : 'eddb', port : 1433 }), polling_interval = 3000, pollingtimer; // if there error connecting database connection.connect(function (err) { // connected! (unless `err` set) console.log(err); }); // create new nodejs server ( localhost:8000 ) app.listen(8000); // on server ready can load our client.html page function handler(req, res) { fs.readfile(__dirname + '/client2.html' , function (err, data) { if (err) { console.log(err); res.writehead(500); return res.end('error loading client.html'); } res.writehead(200, { "content-type": "text/html" }); res.end(data); }); } /* * * here cool part * function loops on since there sockets connected page * sending result of database query after constant interval * */ var pollingloop = function () { // make database query var query = connection.query('select * [dbo].[transaction]'), users = []; // array contain result of our db query // set query listeners query .on('error', function (err) { // handle error, , 'end' event emitted after console.log(err); updatesockets(err); }) .on('result', function (user) { // fills our array looping on each user row inside db users.push(user); }) .on('end', function () { // loop on if there sockets still connected if (connectionsarray.length) { pollingtimer = settimeout(pollingloop, polling_interval); updatesockets({ users: users }); } }); }; // create new websocket connection keep content updated without ajax request io.sockets.on('connection', function (socket) { console.log('number of connections:' + connectionsarray.length); // start polling loop if @ least there 1 user connected if (!connectionsarray.length) { pollingloop(); } socket.on('disconnect', function () { var socketindex = connectionsarray.indexof(socket); console.log('socket = ' + socketindex + ' disconnected'); if (socketindex >= 0) { connectionsarray.splice(socketindex, 1); }}); console.log('a new socket connected!'); connectionsarray.push(socket); }); var updatesockets = function (data) { // store time of latest update data.time = new date(); // send new data sockets connected connectionsarray.foreach(function (tmpsocket) { tmpsocket.volatile.emit('notification' , data); });}; i getting error "econnreset" @
query .on('error', function (err) { // handle error, , 'end' event emitted after console.log(err); updatesockets(err); }), screenshot of error:

since talking sql server in subject of post, , since trying connect port 1433, assuming trying connect microsoft sql-server database. however, using mysql connector (mysql-ali), not make sense. try using ms-sql connector instead, one:
https://www.npmjs.com/package/mssql
you can install issuing following command: npm install mssql
you connect database this:
var sql = require('mssql'); sql.connect("mssql://myuser:mypass@localhost/eddb").then(function() { ... }); and in case mean connect mysql database, not ms-sql database, using wrong port. port 1433 typically ms-sql. mysql's default port 3306.
Comments
Post a Comment