thinkphp5结合workerman的消息推送实例_基于web-msg-sender进行消息推送
来源:互联网 发布:数据安全保护管理制度 编辑:程序博客网 时间:2024/05/16 06:16
简介
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。
特点:
多浏览器支持支持针对单个用户推送消息支持向所有用户推送消息长连接推送(websocket或者comet),消息即时到达支持在线用户数实时统计展示支持在线页面数实时统计展示支持跨域推送
场景
我司客服部门需要订单产生变化时方便的收到提醒,同时会员也需要站内信此类功能
环境
- php7
- thinkphp 5
- ubuntu 16.04, Deepin 15.2, CentOS 7
~~安装~~
基本上下载下来就好了https://github.com/walkor/web-msg-sender
服务跑起来
cd web-msg-senderphp start.php start -d
然后就会看见如下输出
Workerman[start.php] start in DAEMON mode----------------------- WORKERMAN -----------------------------Workerman version:3.2.8 PHP version:7.0.8-2------------------------ WORKERS -------------------------------user worker listen processes statussinux PHPSocketIO socketIO://0.0.0.0:2120 1 [OK] sinux WebServer http://0.0.0.0:2123 1 [OK] ----------------------------------------------------------------Input "php start.php stop" to quit. Start success.
这就是跑起来了,OK
demo
服务端推
/application/lib/event/PushEvent.php
namespace app\lib\event;/** * 推送事件 * 典型调用方式: * $push = new PushEvent(); * $push->setUser($user_id)->setContent($string)->push(); * * Class PushEvent * @package app\lib\event */class PushEvent{ /** * @var string 目标用户id */ protected $to_user = ''; /** * @var string 推送服务地址 */ protected $push_api_url = 'http://127.0.0.1:2121/'; /** * @var string 推送内容 */ protected $content = ''; /** * 设置推送用户,若参数留空则推送到所有在线用户 * * @param string $user * @return $this */ public function setUser($user = '') { $this->to_user = $user ? : ''; return $this; } /** * 设置推送内容 * * @param string $content * @return $this */ public function setContent($content = '') { $this->content = $content; return $this; } /** * 推送 */ public function push() { $data = [ 'type' => 'publish', 'content' => $this->content, 'to' => $this->to_user, ]; $ch = curl_init (); curl_setopt($ch, CURLOPT_URL, $this->push_api_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); $res = curl_exec($ch); curl_close($ch); dump($res); }}
客户端(浏览器)收
/application/demo/view/PushDemo/targetPage.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><strong id="count"></strong><h1 id="target"></h1></body></html><script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script><script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script><script> jQuery(function ($) { // 连接服务端 var socket = io('http://127.0.0.1:2120'); //这里当然填写真实的地址了 // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数 uid = 123; // socket连接后以uid登录 socket.on('connect', function () { socket.emit('login', uid); }); // 后端推送来消息时 socket.on('new_msg', function (msg) { console.log("收到消息:" + msg); $('#target').append(msg).append('<br>'); }); // 后端推送来在线数据时 socket.on('update_online_count', function (online_stat) { console.log(online_stat); $('#count').html(online_stat); }); })</script>
写个用例,试一下
/application/demo/controller/PushDemo.php
namespace app\demo\controller;use app\lib\event\PushEvent;/** * 推送demo * * Class PushDemo * @package app\demo\controller */class PushDemo{ /** * 推送一个字符串 */ public function pushAString() { $string = 'Man Always Remember Love Because Of Romance Only'; $string = input('msg') ? : $string; $push = new PushEvent(); $push->setUser()->setContent($string)->push(); } /** * 推送目标页 * * @return \think\response\View */ public function targetPage() { return view(); }}
© 著作权归作者所有
转自:https://my.oschina.net/inuxor/blog/737863#comment-list
相关文章参考(有用必读): http://www.ptbird.cn/web-msg-sender-send-content.html
阅读全文
0 0
- thinkphp5结合workerman的消息推送实例_基于web-msg-sender进行消息推送
- 基于workerman 的 消息推送
- workerman 实现消息推送
- workerman 实现消息推送
- 【转 】workerman 实现消息推送
- 基于DWR消息推送实例
- Workerman之WEB消息推送框架使用笔记【一】
- 基于MQTT的消息推送
- iphone推送消息 实例
- Comt4j消息推送实例
- web消息推送技术
- web消息推送
- web消息推送技术
- 实现web消息推送
- WEB即时通讯/消息推送
- 基于workerman的集群推送例子
- 基于 Pushlets 的消息推送设计
- 基于java-flex-blazeds的消息推送
- JS实践——放大镜
- SpringMVCSpringHibernate的简单整合
- 数据结构(九)排序
- 925(1)
- 采用密钥方式登录Linux服务器
- thinkphp5结合workerman的消息推送实例_基于web-msg-sender进行消息推送
- SPOJ-SQFREE SPOJ4168 莫比乌斯函数の性质
- 21. Merge Two Sorted Lists
- 深入了解java集合框架中的常用集合
- 143. Reorder List
- C# Access应用随记
- ngrok 微信接口开发利器
- Redis学习03——存储字符串(String)
- Ubuntu16.04安装Windows可执行文件(QQ.exe)