im聊天php,利用Swoole实现简单IM聊天

利用Swoole实现一个简单的IM通讯聊天

为了大家方便理解,直接上代码,并在代码中写了详细注释

服务端代码如下

//创建websocket服务器并监听9501 端口

$ws = new Swoole\WebSocket\Server('0.0.0.0',9501);

//当用户连接后,执行的函数

$ws->on('open',function ($ws,$request){

//控制台中输出

echo "新用户 {$request->fd} 加入了\n";

//将用户的fd存到全局变量中,并设置用户的默认昵称

$GLOBALS['user'][$request->fd]['id'] = $request->fd;

$GLOBALS['user'][$request->fd]['name'] = "匿名用户".mt_rand(1000,9999);

});

//当收到消息时,执行的函数

$ws->on('message',function ($ws,$data){

//要返回的消息内容

$mgs = $GLOBALS['user'][$data->fd]['name'].": " .$data->data;

//循环每个在线用用户

foreach ($GLOBALS['user'] as $user)

{

//向每个在线的用户推送消息

$ws->push($user['id'],$mgs);

}

});

//当用户断开连接时,执行的函数

$ws->on('close',function ($ws,$fd){

//控制台中输出

echo "用户 {$fd} 已掉线\n";

//当用户掉线后,清除掉全局变量中的用户信息

unset($GLOBALS['user'][$fd]);

});

//启动websocket服务

$ws->start();

前端代码如下

Title

//连接websocket服务端,并创创建 WebSocket 对象

var wsServer = "ws://106.14.40.226:9501";

var webSocket = new WebSocket(wsServer);

//获取消息显示div的dom元素

var msg = document.getElementById('msg');

//当用户连接后,简单输出一下

webSocket.onopen = function (res) {

console.log('连接成功');

}

//当收到用户消息后

webSocket.onmessage = function (res) {

//追加收到的消息到消息列表

msg.innerHTML += res.data + "
";

console.log(res.data);

}

//当关闭连接后

webSocket.onclose = function (res) {

console.log('服务器拒绝');

}

//当发生错误后

webSocket.onerror = function (res,e) {

console.log('error');

}

//点击发送按钮,实现获取输入框数据并发送

function send() {

var text = document.getElementById('text').value;

webSocket.send(text);

}

上面就展示了一个简单的IM通讯实例,运行结果如下

bd517929ef705ad561c093e123079a21.png

7fc95d197553ed34c1165b5b0de3805e.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值