2014-01-20 12 views
1

나는 내 사이트에 대한 인스턴트 메시징 시스템을 개발하고 있으며 나는 2 가지 문제가있다. 첫째, console.log가 작동하지 않아 실행중인 스크립트를 추적 할 수 없습니다. 두 번째는 들어오는 메시지를 볼 수 없으며, 입력 한 자체 메시지 만 볼 수 있으며 메시지는 데이터베이스에 추가되지 않습니다. 아마도 문제는 mysql 요청이나 mysql 연결 일 것이다. 이러한 문제를 해결하기 위해 도와주세요node.js + socket.io 채팅 응용 프로그램

서버

var http = require('http'); 

var mysql  = require('mysql'); 

var connection = mysql.createConnection({ 
host  : 'localhost', 
user  : 'root', 
password : '', 
database : 'lc', 
}); 


var io = require('socket.io').listen(8080); 

/*io.set('log level', 0);*/ 


io.sockets.on('connection', function (socket) { 


function escapeHtml(str) { 
    return String(str) 
     .replace(/&/g, "&") 
     .replace(/</g, "<") 
     .replace(/>/g, ">") 
     .replace(/"/g, "") 
     .replace(/'/g, "'") 
     .replace(/\//g, "⁄"); 
} 


socket.on('connect_user', function(login,password, idUserGet){ 
    var sql = 'SELECT * FROM users WHERE login = ' + connection.escape(login) + ' AND password = ' + connection.escape(password) + ' '; 
    connection.query(sql, function(err, rows) { 
     if(rows.length > 0) { 

      socket.userGet = idUserGet; 
      socket.userSend = rows[0].id; 


      console.log(socket.userSend+' has been logined '); 
      socket.join(socket.userSend); 


      socket.user = rows[0].login; 
     } 
    }); 



socket.on('msg', function(msg) { 
    // htmlencode 
    msg = escapeHtml(msg); 

    // Unixtime 
    milliseconds = parseInt(new Date().getTime()/1000); 
    var post = {user_send: socket.userSend, user_get: socket.userGet, text: msg, date: milliseconds}; 
    query = connection.query('INSERT INTO messages SET ?', post, function(err, result) { 
     update = connection.query(sql); 
    }); 





    console.log(' usersend id: ' +socket.userSend +' user get: ' + socket.userGet + ' '); 
    socket.broadcast.to(socket.userGet).json.emit('incMsg',{'userSend': socket.userSend, 'name': socket.user, 'text': msg, 'time': time }) 
}); 
}); 
}); 

클라이언트

function tpl(t) { 
html = ' <div class="msg>'; 
html += ' <div class="img"><img src="'+t.img+'" /></div>'; 
html += ' <div class="info">'; 
html += '   <div class="name"><a href="#">' + t.name + '</a></div>'; 
html += '  <div class="text">'+t.text+'</div>'; 
html += ' </div>'; 
html += '</div>'; 

return html; 
} 

$(window).load(function() { 
var milliseconds = parseInt(new Date().getTime()/1000); 

if (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) { 
    socket = io.connect('http://localhost:8080', {'transports': ['xhr-polling']}); 
} else { 
    socket = io.connect('http://localhost:8080'); 
} 

socket.on('connect', function() { 
    var id = '<?=$MY_FRIEND_ID;?>'; 

    img = $("#userGet img").attr('src'); 
    $("#userGet img").attr('src',img); 

    $("#messages").scrollTop($("#messages")[0].scrollHeight+9999999); 
    socket.id = id; 
    socket.emit('adduser', '<?=$MY_LOGIN;?>','<?=$MY_PASS;?>',id); 



    socket.on('incMsg', function (msg) { 

     if(msg.userSend == id) { 
      msg.text = msg.text.replace(/(\n(\r)?)/g, ' <br/>'); 


      if(msg.userSend == '<?=$MY_LOGIN;?>') msg.img = '<?=$avatar;?>'; else msg.img = '/img/users/<?=$MY_FRIEND_AVATAR;?>'; 

      html = tpl(msg); 


      $('#messages').append(html); 
      $("#messages").scrollTop($("#messages")[0].scrollHeight+9999999); 
     } 
    }); 


    $('#input').keydown(function(event) { 
     event = event || window.event; 
     if(event.keyCode == 13 && !(event.shiftKey)) { 

      input = $(this).val(); 


      var newDate = new Date(); 
      if(newDate.getMinutes() < 10) getMinute = '0'+newDate.getMinutes(); else getMinute = newDate.getMinutes(); 
      dateString = newDate.getHours() + ":"; 
      dateString += getMinute + ":"; 
      dateString += newDate.getSeconds(); 

      var msg = { 
       name: '<?=$MY_LOGIN;?>', 
       text: input.replace(/(\n(\r)?)/g, ' <br/>'), 
       time: dateString, 
       img: '<?=$avatar;?>' 
      }; 


      html = tpl(msg); 

      $('#messages').append(html); 
      $("#messages").scrollTop($("#messages")[0].scrollHeight+9999999); 

      socket.emit('msg', input); 
      $(this).val(''); 

      event.preventDefault(); 
     } 
    }); 

}); 
}); 
+0

문제는 내가 데이터베이스에서 로그인 및 비밀번호를 발급받을 질수 있다는 것입니다, 쿼리 작업을 해달라고. – user3140144

답변

0

문제는 당신이 실제로 MySQL의 연결 없다는 것입니다.

이 시도 :

/* requiring modules */ 
 

 
var connection = mysql.createConnection({ 
 
    host  : 'localhost', 
 
    user  : 'root', 
 
    password : '', 
 
    database : 'lc', 
 
}); 
 

 
connection.connect(function(err){ 
 
    //can do something with an error 
 
}); 
 

 
/* your code*/