Workerman在线聊天 用户、管理员、游客相互之间的即时通讯插件

预览截图

功能介绍

此插件基于WorkermanGatewayWorker框架开发,基于Websocket协议运行,用于站内实时通讯、在线客服,后台接受服务通知等,已实现用户与用户、用户与管理员、管理员与管理员、管理员与游客之间快速沟通并支持发送表情和文件

演示

功能特性

  1. 各种身份用户的实时聊天
  2. 通过为html标签添加指定的class和data一键发起与指定用户的会话窗口
  3. 系统内任意处的PHP业务代码中可通过插件提供的类向用户、管理、用户组、管理组发送消息
  4. 站外调用

重要提示

  1. 由于windows系统下不支持守护进程,小黑窗关闭则服务自动退出,建议您仅用于测试

准备工作

安装插件前请确保对[fastadmin/application/command.php]有写入权限,若已安装,则需手动打开该文件,并在数组的最后,增加一个路径
addons\fastchat\library\GatewayWorker\start
  1. 开端口:请在阿里云/腾讯云的安全组、服务器防火墙内打开[1818]端口,此端口可在插件配置中修改
  2. 执行php think fastchat start d启动Workerman服务,详细启停查看在下方有介绍
  3. 若您未开启调试模式,安装完插件后,请清理系统缓存和本地浏览器缓存(或修改常规管理-》系统配置-》基础配置中的版本号),调试模式下,请忽略此步骤
  4. 后台管理员用户,若插件提示未登陆,重新登录即可(因为你在监听登录的代码安装前完成了登录)

额外的功能使用方式

  • 一键唤起与指定用户的会话窗口
<div data-userid="1||admin" class="fastchat_user">和ID为1的管理员对话</div>

标签是任意的,关键在于 class 和 data-userid 属性,class不带任何样式,data-userid的设置方式:ID||身份标识
身份标识有以下几种:
用户:user
管理员:admin
游客:tourists
服务号:service_user
使用如:1||user 和 1||admin 分别代表调起ID为1的用户和ID为1的管理员的会话窗口
  • PHP业务代码中发送消息
首先:use addons\fastchat\library\Chat;

// 静态链式调用
$res = Chat::init('服务号ID,也就是发信人')
->user('1,2')//发送给ID为1,2的用户
->admin('1,2')//发送给ID为1,2的管理员
//->admin([1,2])
->user_group('1,2')//发送给ID为1,2的用户组中的所有用户
->admin_group('1,2')//发送给ID为1,2的管理角色组中的所有管理员
->send('消息内容');

// 先实例化再链式调用
$Chat = new Chat(1);//这里传的是服务号ID
$Chat->user('1,2,3')->send('消息内容');

user、admin、user_group、admin_group方法,均可以传逗号分隔的字符串或者一维数组

站外/其他模块调用

  1. 插件配置-》跨站调用允许域名-》增加要调用的域名
  2. 按需引入js和css文件,调用初始化方法
介绍篇幅有限,此处不上代码,具体调用方式请查看[addons/fastchat/example/stand_out.html]文件
若是在站内的其他模块调用,调用时,不使用二级域名,可以实现自动登录,站外用户登录功能,暂未实现

启动与停止

  • 以debug(调试)方式启动(关闭小黑窗,服务自动退出)
php think fastchat start
  • 以daemon(守护进程)方式启动
php think fastchat start d
  • 停止
php think fastchat stop
  • 重启
php think fastchat restart
  • 平滑重启
php think fastchat reload
  • 查看状态
php think fastchat status
  • 以上操作,windows系统均无效,windows下请运行
addons/fastchat/library/GatewayWorker/start_for_win.bat 文件启动服务

查看更多

常见问题

点赞 分享