您的位置:首页 > 数据库 > MySQL

chat聊天室增加mysql记录功能

2016-01-07 19:02 766 查看
代码:http://download.csdn.net/detail/chuanyu/9394838

参考:http://www.cnblogs.com/whoamme/p/3459071.html

服务器主要代码:

var app = require('express')();

var http = require('http').Server(app);

var io = require('socket.io')(http);

var mysql = require('mysql');

var db_chat = 'chat';

var tb_talk = 'talk';

//创建一个connection

var client = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'123456',
port:'3306',

});

//创建一个connection

client.connect(function(err){
if(err){
console.log('[query]-:'+err);
return ;
}
console.log('[Connection connect] succeed!');

});

client.query("use "+ db_chat);

app.get('/', function(req, res){
res.send('<h1>Welcome Realtime Server</h1>');

});

//在线用户

var onlineUsers = {};

//当前在线人数

var onlineCount = 0;

io.on('connection', function(socket){
console.log('a user connected');

//监听新用户加入
socket.on('login', function(obj){
//将新加入用户的唯一标识当作socket的名称,后面退出的时候会用到
socket.name = obj.userid;

//检查在线列表,如果不在里面就加入
if(!onlineUsers.hasOwnProperty(obj.userid)) {
onlineUsers[obj.userid] = obj.username;
//在线人数+1
onlineCount++;
}

//向所有客户端广播用户加入
io.emit('login', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});
console.log(obj.username+'加入了聊天室');
});

//监听用户退出
socket.on('disconnect', function(){
//将退出的用户从在线列表中删除
if(onlineUsers.hasOwnProperty(socket.name)) {
//退出用户的信息
var obj = {userid:socket.name, username:onlineUsers[socket.name]};

//删除
delete onlineUsers[socket.name];
//在线人数-1
onlineCount--;

//向所有客户端广播用户退出
io.emit('logout', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});
console.log(obj.username+'退出了聊天室');
}
});

//监听用户发布聊天内容
socket.on('message', function(obj){
//向所有客户端广播发布的消息
io.emit('message', obj);
console.log(obj.username+'说:'+obj.content);

var mydate = new Date();
var t = mydate.toLocaleString();

client.query(
'INSERT INTO '+tb_talk+' '+
'SET user = ?, msg = ?',
[obj.username, obj.content],
//'insert into talk (user,msg) values("cy","hello,world")',//ok
//'insert into '+tb_talk+'(user,msg) values('+obj.username+','+obj.content+')',
//" insert into "+tb_talk +" (user,msg) values( "+obj.username+","+obj.content+" )",
//'insert into ' + tb_talk + ' (user,msg) values( '+ obj.username + ','+ obj.content +')',
//'INSERT INTO '+ tb_talk +'values('+null+','+obj.username+','+null+','+obj.content+')',
//'INSERT INTO '+ tb_talk +'values('+obj.username+','+obj.content+')',
function insertCb(err,results,fields){
if(err){
throw err;
}

if(results){
//console.log("ok");
}
//client.end();
}
);

});

  

});

http.listen(3000, function(){
console.log('listening on *:3000');

});





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: