chat聊天室增加mysql记录功能

17 篇文章 0 订阅
12 篇文章 1 订阅

代码: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');
});














  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值