mysql - Disconnect event fired many times in socket.io -


i've implemented simple chat application .but when client leaves page or closes browser tab disconnect event called many times. time twice time thrice. inside disconnect call function i'm inserting chat history database. callback function calling many times same chat history inserting many times. dont know problem. please help.

code this

server side code

var sys = require('sys'); var fs = require('fs'); var io = require('socket.io'); var connection = function(){ sys.puts("here") var mysql = require('mysql'); var sql = mysql.createconnection({ host:'localhost', port:3306, user:'root', password:'root' }); sql.query('use chat'); sys.puts("here" +sql) return sql; } var server = require('http').createserver(function(req, response){  sys.puts("request recieved"); response.writeheader(200,{"content-type":"text/html"}); response.write("hello world"); var rs = fs.createreadstream(__dirname + '/chat.html') sys.pump(rs,response); });  var history = ""; var socket = io.listen(server);  var mysql = connection(); socket.sockets.on('connection',function(client){ sys.puts("socket connected id "+client.id); sys.puts("session id",client.handshake.sessionid) var username; client.send('welcome chat'); client.send('enter name'); client.on('message',function(message){ if(!username) { username = message; client.send('welcome,' +username); return; } feedback = username+' sent:'+message; history = history + feedback + '\n'; client.send(feedback) client.broadcast.send(feedback);  sys.puts("history " +history); sys.puts("mysql" +mysql);   client.on('disconnect',function(){       mysql.query('insert tblchathistory (fldchathistory) values ("'+history+'")',function(err){      sys.puts("error" +err);      history = "";  })   sys.puts("socket connected id "+client.id);  }) }) }) server.listen(4000); 

client side code

    <script type="text/javascript">         var socket;         socket = new io.connect("http://localhost:4000");         var connect = false;         socket.on('connect',function(){             alert("connected "+socket.socket.sessionid);             connect = true;         })         function chat()         {          socket.on('message',function(message){             var data = message;             var list ='<li>' +data +'</li>'              document.getelementbyid("log").innerhtml +=list;             })          }         function sendmsg(event)          {               var entry = document.getelementbyid("entry");                var msg = entry.value;                 if(event.keycode != 13)return                 if(msg)                     {                        if(connect)                            {                              socket.emit('message',msg);                              entry.value = "";                              }                      }          }    </script>  <body onload="chat();">     <h1>chat</h1>     <div><ul id="log"></ul></div>     <div id="console">         <input type="text" id="entry" onkeypress="sendmsg(event);"/>     </div>     <div><a href="http://localhost:8085/billdesk/welcomejsf.jsf" >exit chat</a></div> </body> 


Comments

Popular posts from this blog

c# - Operator '==' incompatible with operand types 'Guid' and 'Guid' using DynamicExpression.ParseLambda<T, bool> -