Thinkphp 使用Workerman 聊天室
1、下载Workerman插件
composer require topthink/think-worker
2、示例代码 后端
2.1 下载之后会得到这俩个文件
2.2 这个文件对应上面的worker_class 的地址
2.3.worker.php示例代码
<?php
namespace app\http;
use think\facade\Db;
use think\worker\Server;
use Workerman\Lib\Timer;
use app\model\IndexModel;
/*** websockect* Class Worker* @package app\http*/
class Worker extends Server
{protected $socket = 'http://0.0.0.0:2348';/*** 心跳检测* @var int*/protected static $heartbeat_time = 55;public function onConnect($connection){var_dump('connect success');$connection->send(json_encode('connect success'));}## 接收消息,接收心跳消息 ,接收用户id 信息等等public function onMessage($connection,$data){$connection->lastMessageTime = time();#var_dump($data);$connection->send(json_encode('receive success'));}/*** 消息回调* @param $worker* @author 冬* @date 2022/5/5 17:07*/public function onWorkerStart($worker){//查看是否有新的下面的3是几秒推送一次Timer::add(3, function () use ($worker) {$time_now = time();var_dump(date('Y-m-d H:i:s',$time_now) );## 推送的数据$infoObj = IndexModel::getTips();$infoArr = json_decode(json_encode($infoObj),true);if (true) {foreach ($worker->connections as $connection) {if (empty($connection->lastMessageTime)) {$connection->lastMessageTime = $time_now;}var_dump(date('Y-m-d H:i:s',$connection->lastMessageTime) );if ($time_now - $connection->lastMessageTime > self::$heartbeat_time) {$connection->close();}$connection->send(json_encode($infoArr));}} else {var_dump(22);foreach ($worker->connections as $connection) {if (empty($connection->lastMessageTime)) {$connection->lastMessageTime = $time_now;continue;}if ($time_now - $connection->lastMessageTime > self::$heartbeat_time) { //连接超时$connection->close();}}}});}public function onClose($connection){var_dump('close');}}
2.4 前端示例代码
<script>
let ws = new WebSocket("ws://127.0.0.1:2348")ws.onopen = function() { //绑定连接事件console.log("连接成功");//每30秒发送一次心跳setInterval(function(){ws.send(JSON.stringify({'type':"peng"}));console.log('发送心跳...');},30000)};ws.onmessage = function(evt) {//绑定收到消息事件data = JSON.parse(evt.data)console.log(data);//这里处理收到的消息, type类型有两种: connectin、deposit如果有deposit要提示};ws.onclose = function(evt) { //绑定关闭或断开连接事件console.log("连接已关闭");
};</script>
3、开启服务 php think worker:server
4、打开前端页面查看是否链接成功
Thinkphp 使用Workerman 聊天室相关推荐
- php制作聊天室,workerman+thinkphp制作简易聊天室
下面由workerman教程栏目给大家介绍制作简易聊天室的方法,希望对需要的朋友有所帮助! 1:环境在window下面的,thinkphp3.2 2:下载GatewayWork,放到 目录下 3:然后 ...
- 江湖聊天室php,workerman+thinkphp制作简易聊天室
1:环境在window下面的,thinkphp3.2 2:下载GatewayWork,放到 目录下 3:然后双击打开 这个文件开启服务 4:所有的逻辑均在 Events.php这个文件里面 5:当用户 ...
- 聊天室 php ChatApi
thinkphp workerman 聊天室所需api: ChatApi类说明: 聊天(用户,房间,好友,内容)的记录--已完成 聊天(用户,房间,好友,内容[可传递参数retention_data, ...
- workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)...
workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的) 一.总结 1.下面链接里面还有一个来聊的php聊天室源码可以学习 2. ...
- tp5 + workerman 实现聊天室
最近公司的项目需要做一个简单的聊天,项目用的框架是thinkphp 5,开发任务主要是实现买卖双方生成订单后,可以在线交流. 无意间在tp手册上看到 workerman socket包,然后就安装了试 ...
- php即时聊天的框架_workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)...
workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的) 一.总结 1.下面链接里面还有一个来聊的php聊天室源码可以学习 2. ...
- THINKPHP聊天软件H5实时聊天室自动分配账户全开源商业源码
介绍: THINKPHP聊天软件H5实时聊天室,自动分配账户,全开源商业源码 都是去年买的,很多买的源码基本都下架了, 源码的优点: 运营版本的聊天室,可以添加好友,建立群组,私聊,禁言功能 H5+T ...
- laravel整合workerman做聊天室
测试工具 http://www.blue-zero.com/WebSocket/ 2018年8月6日17:28:24 <?phpnamespace App\Console\Commands;u ...
- 视频教程-Workerman入门到精通实战layIM聊天室-PHP
Workerman入门到精通实战layIM聊天室 多年一线互联网开发实战以及培训经验,对php开发,linux运维架构有丰富的经验,善于分析问题,解决问题. lampol ¥149.00 立即订阅 扫 ...
最新文章
- 五分钟使你的Firefox快两倍
- 【Android Gradle 插件】Android Plugin DSL Reference 离线文档下载 ( GitHub 下载文档 | 查看文档 )
- java protected关键字_Java 权限protected关键字纠正
- c# mysql 连接
- 怎么调整矩形边框宽度_Illustrator实例教程:利用自定义画笔绘制中国风传统边框...
- Django之ORM的增删改查
- 【批处理学习笔记】第二十五课:间接传递
- java二维数组冷知识
- ecshop源码分析:会话类cls_session
- h5页面如何切图_HTML5自助切图
- 启用FM模块后F-02创建会计凭证报错,消息号FI313 “在项目 1 (2/3/4)中未输入/派生出投资中心“ - FMDERIVE
- html文件如何设置右键菜单,windows系统使用小技巧,创建属于自己的右键新建菜单-右键菜单设置...
- html项目经验范文,优秀的项目经验怎么写?
- mysql 备份多个库_使用mysqldump备份多个库
- cocos creater 鸿蒙 音频卡死 播放失败 不回调
- IM——基本系统架构
- 多元回归——matlab,R与spss
- Unity代码添加设置Tag或Layer
- 网易自媒体视频,批量修改md5采集下载上传,批量自动去水印加水印软件 今日头条自媒体视频,youtubu...
- [开源名人访谈录] Philippe Gerum