tp5结合workerman+gateway实现简单的IM

为何突然想到要实现IM,其实也是源于自己正在弄客服系统,所以想到用socket,而php里最为成熟并且多人使用的想必就是workerman了,而tp5也实现了结合workerman的包了点击打开链接

而我也是从这篇文章中借鉴修改的点击打开链接 可以看看这篇,写的很详细,我的引入是使用原生引入

composer require workerman/workerman
composer require workerman/gateway-worker
在借鉴的过程中,由于自己的细节处理不好导致一个小错误影响了自己大半天时间排查
$gateway = new Gateway('websocket://0.0.0.0:8282');
        $gateway->name = 'WebIMGateway';
        $gateway->count = 4;
        $gateway->lanIp = '127.0.0.1';
        $gateway->startPort = 2900;

就是在这里,8282端口前面的这个冒号,由于我是在linux虚拟机里开发,没注意到

在例子上有些地方自己删了有些地方自己修改过,毕竟每个人对功能的需求不一样,例子中没有加入心跳检测,但是workerman的介绍中,说明了心跳检测的重要性,那么我们有必要加入,很简单的两行代码

//心跳数据
        $gateway->pingData = '{"type":"ping"}';
        //心跳间隔
        $gateway->pingInterval = 30;

前端页面就是很简单的实现socket功能,当然我的虚拟机设置了虚拟域名

前端代码大概如此,那么接下来开启服务

/usr/bin/php /var/www/html/aaa/server.php start

由于是测试,所以用户数据我都是写死的,方便调试,后续按照自己的需求,加入登录功能,绑定client_id就可以实现简单的IM聊天了,贴上自己写的简单的页面功能截图

tp5结合workerman+gateway实现简单的IM_第1张图片

tp5结合workerman+gateway实现简单的IM_第2张图片

后期通过优化界面,完善功能,一个简单的客服系统就可以出来了

你可能感兴趣的:(技术分享)