*下面的方法性能不高,最新swoole实时实现方式:http://www.zixuephp.net/article-463.html
通过ajax和setInterval()函数,配合php+mysql实现一个简单的在线聊天室的功能。附带详细源码案例。这个聊天室是一个简单的聊天室,通过javascript setInterval()和ajax函数,不停的去获取服务器获取最新的聊天数据信息,并无刷新的写入到前台DOM中,来实现在线聊天的功能,这是一个比较笨的方法实现在线聊天室功能,不建议用于实际项目中。
html代码:
实现一个简单的在线聊天室功能 在线聊天
.chats { width:100%;max-height:295px;min-height:200px; height:auto; overflow-y:auto; } .chatbtn { width:100%; padding:10px 10px; border-top:1px dashed #000;} .chats .chatlist { width:100%; padding:10px 10px; min-height:24px; line-height:1.2; font-size:13px; text-align:left; } .chats .chatlist .chattit { font-size:14px; } .chats .chatlist .chattit span { margin-right:2px; } .chats .chatlist .chatcon { font-size:13px; padding-left:10px; margin-top:6px;text-decoration: underline;}
php数据处理代码 chat.php:
exec("insert into chat (name,content,addtime,address) values('$name','$con',now(),'$ips')")>0){
echo '发送成功!';
exit;
}else{
echo '发送失败!';
exit;
}
}
}else if ($_GET['type'] == 'get_def'){
//获取数据
$res = $dbh->query("SELECt * FROM chat ORDER BY id DESC LIMIT 10");
$res = $res->fetchAll();
if($res){
echo json_encode($res);
exit;
}else{
echo 'error!';
exit;
}
}else if($_GET['type'] == 'get_new'){
$num = intval($_POST['num']);
$sql1 ="SELECt * FROM chat WHERe id>{$num} ORDER BY id DESC";
$res1 = $dbh -> query($sql1);
$res2 = $res1->fetchAll();
if($res2){
echo json_encode($res2);
exit;
}else{
echo 'error!';
exit;
}
}
}
?>mysql数据库结构:
CREATE TABLE IF NOT EXISTS `chat` ( `id` int(8) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` char(10) NOT NULL COMMENT '昵称', `content` varchar(255) NOT NULL COMMENT '内容', `addtime` datetime NOT NULL COMMENT '发布时间', `address` varchar(80) DEFAULT '未知' COMMENT 'ip地址', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='在线聊天' AUTO_INCREMENT=3 ;
ajax+php简单聊天室源码下载:
chat.rar



