php聊天功能_php实现简单聊天功能

1、创建聊天消息表,其表的字段有消息内容,发送时间和发送者的名称;

SQL:

CREATE TABLE `guanhui`.`message` (

`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '消息ID' ,

`content` VARCHAR(255) NOT NULL COMMENT '消息内容' ,

`sender` VARCHAR(60) NOT NULL COMMENT '发送者' ,

`send_time` INT(10) NOT NULL COMMENT '发送时间' ,

PRIMARY KEY (`id`)

) ENGINE = MyISAM;

2、创建php文件将聊天消息查询出来,并以json格式输出;

$con = mysql_connect("localhost","","");

if (!$con) {

die('Could not connect: ' . mysql_error());

}

mysql_select_db("chat", $con);

mysql_query("set names 'utf8'");

$sql = "SELECT * FROM `message`";

$result = mysql_query($sql);

if(isset($result)){

json_encode(array(

'code' => 0,

'msg' => 'OK',

'data' => mysql_fetch_array($result, MYSQL_ASSOC)

))

} else {

json_encode(array(

'code' => 0,

'msg' => '聊天信息为空!'

))

}

3、在前端使用Ajax轮询请求php文件,并将消息展示出来。

setInterval(function(){

$.get('/get_message_list.php', function(data){

$(data).each(function(value, item){

$('#message_list').append('来自:' + data.sender + '的消息:' + data.message + '发送时间:', data.send_time);

});

});

}, 600);

4、创建send_message.php用来接收发送的消息,并将数据储存到数据库。

$send_time = date('Y-m-d H:i:s',time());;

$send = $_POST['sender'];

$content = $_POST['content'];

$con = mysql_connect("localhost","","");

if (!$con) {

die('Could not connect: ' . mysql_error());

}

mysql_select_db("ing", $con);

mysql_query("set names 'utf8'");

$insert="INSERT INTO `chat` (`id` ,`sender` ,`content` ,`send_time`) VALUES (NULL , '$sender', '$content', '$send_time')";

$result = mysql_query($insert);

5、在前端获取要发送的消息,并请求send_message.php。

function sendcontent()

{

var xmlhttp;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

// 服务端返回了正确数据,开始响应处理

{

document.getElementById("input").innerHTML="";

}

}

xmlhttp.open("POST","/send_message.php",true);

var f=document.chat;

var content = f.content.value;

var sender = f.sender.value;

//发送请求

//这里使用Post方法传递参数;

//将要构造的参数连接起来,接收的时候:$_POST['send'];

var post_str= "content="+ content+"&sender="+sender;

//使用post的时候必须在发送请求之前加上下面这句

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send(post_str);

}

更多学习内容请访问:

腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
想要实现 WebSocket 聊天功能,需要以下步骤: 1. 创建一个 WebSocket 服务器 使用 PHP 的 Swoole 扩展可以快速创建一个 WebSocket 服务器,代码如下: ``` $server = new Swoole\WebSocket\Server("0.0.0.0", 9501); // 监听 WebSocket 连接事件 $server->on('open', function (Swoole\WebSocket\Server $server, $request) { echo "opened: {$request->fd}\n"; }); // 监听 WebSocket 消息事件 $server->on('message', function (Swoole\WebSocket\Server $server, $frame) { echo "received message: {$frame->data}\n"; }); // 启动服务器 $server->start(); ``` 2. 处理聊天消息 在上面的代码中,当接收到 WebSocket 消息事件时,会输出消息内容。我们可以根据消息内容来处理聊天功能。比如,如果消息内容是“加入房间”,我们可以将该用户加入到聊天室中,如果消息内容是“发送消息”,我们就将该消息发送给所有人。代码示例: ``` $server->on('message', function (Swoole\WebSocket\Server $server, $frame) { $data = json_decode($frame->data, true); switch ($data['action']) { case 'join': // 将用户加入到聊天室 $server->push($frame->fd, json_encode(['action' => 'join', 'message' => '加入聊天室成功'])); break; case 'send': // 将消息发送给所有人 foreach ($server->connections as $fd) { $server->push($fd, json_encode(['action' => 'send', 'message' => $data['message']])); } break; default: break; } }); ``` 3. 前端页面实现 最后,需要写一个前端页面来连接 WebSocket 服务器,并实现聊天功能。代码示例: ``` <html> <head> <title>WebSocket 聊天室</title> </head> <body> <div> <input type="text" id="message" placeholder="请输入消息"> <button id="send">发送</button> </div> <ul id="messages"></ul> <script> var ws = new WebSocket('ws://localhost:9501'); ws.onopen = function(event) { // 连接成功,发送加入房间消息 ws.send(JSON.stringify({'action': 'join'})); }; ws.onmessage = function(event) { var data = JSON.parse(event.data); switch (data.action) { case 'join': // 加入聊天室成功 addMessage('系统消息', '加入聊天室成功'); break; case 'send': // 收到消息 addMessage('其他用户', data.message); break; default: break; } }; document.getElementById('send').addEventListener('click', function() { // 发送消息 var message = document.getElementById('message').value; ws.send(JSON.stringify({'action': 'send', 'message': message})); document.getElementById('message').value = ''; }); function addMessage(user, message) { // 添加消息到列表中 var li = document.createElement('li'); li.innerHTML = '<strong>' + user + '</strong>: ' + message; document.getElementById('messages').appendChild(li); } </script> </body> </html> ``` 以上就是实现 WebSocket 聊天功能的全部代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值