十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章给大家分享的是有关使用workerman进行消息推送的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
成都创新互联-专业网站定制、快速模板网站建设、高性价比寻甸网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式寻甸网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖寻甸地区。费用合理售后完善,10年实体公司更值得信赖。
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。
支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步MySQL、异步redis、异步Http、异步消息队列等众多高性能组件。与之类似的还有swoole,MeepoPS。
首先下载workerman的Web消息推送系统 web-msg-sender。
# wget http://www.workerman.net/download/senderzip # unzip senderzip #cd web-msg-sender #vim start.php
use Workerman\Worker; // composer 的 autoload 文件 include __DIR__ . '/vendor/autoload.php'; if(strpos(strtolower(PHP_OS), 'win') === 0) { exit("start.php not support windows, please use start_for_win.bat\n"); } // 标记是全局启动 define('GLOBAL_START', 1); // 加载IO 和 Web require_once __DIR__ . '/start_io.php'; 可以注释掉 webServer 服务 没什么用 省点资源 // require_once __DIR__ . '/start_web.php'; // 运行所有服务 Worker::runAll();
保存
#vim start_io.php 找到 将端口改成你要监听的端口 我是2120 记住要在安全组里入方向添加白名单 // PHPSocketIO服务 $sender_io = new SocketIO(2120); 服务端设置完毕后 #php start.php start -d //开启服务 并保持进程
推送类 我用的tp5
setUser($user_id)->setContent($string)->push();//连贯操作 * * Class WebSocket * @package app\index\moudel; */ class WebSocket { /** * @var string 目标用户id */ protected $to_user = ''; /** * @var string 推送服务地址 */ protected $push_api_url = 'http://127.0.0.1:2000'; /** * @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, ]; // var_dump($data); // var_dump($this->push_api_url); $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); } }
操作控制器
setUser($uid)->setContent($string)->push(); } /** * 推送目标页 * * @return \think\response\View */ public function targetPage(){ return view(); } }
推送目标的前端显示
Title
http://我自己的域名/index/index/pushAString?uid=123 ok 为推送成功 offline 为未在线 fail 为失败
前端成功展示 321为我自定义的uid
感谢各位的阅读!关于使用workerman进行消息推送的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!