TP5+web-msg-sender实现即时推送(即时站内信)

1.下载web-msg-sender 下载链接。并解压缩到任意目录(你可以放到tp5目录里,也可以放到www目录)
2.启动:linux系统cd到到web-msg-sender目录里运行php start.php start -d
windows系统进入到框架目录里双击start_for_win.bat文件启动。
windows会看见如下输出
TP5+web-msg-sender实现即时推送(即时站内信)_第1张图片
3. 服务器推送
/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/';//如果在服务器上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);
 
    }
}

4.控制器调用
/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()
    {
        $uid= input('uid') ? : $string;//接收客户端发过来的uid进行业务操作
         $string = 'Man Always Remember Love Because Of Romance Only';//推送的消息,实际开发中换成根据uid查的业务值
        $push = new PushEvent();
        $push->setUser()->setContent($string)->push();
 
 
    }
 
    /**
     * 推送目标页
     *
     * @return \think\response\View
     */
    public function targetPage()
    {
        return view();
    }
}

5.客户端(浏览器)收
/application/demo/view/PushDemo/targetPage.html

 



    
    Title



 

效果如下
TP5+web-msg-sender实现即时推送(即时站内信)_第2张图片TP5+web-msg-sender实现即时推送(即时站内信)_第3张图片如果http://www.memebackstage.com/index/push/pushAString没请求成功
http://www.memebackstage.com/index/push/targetpage 页面就会一直请求127.0.0.1::2120,直到推送成功
刷新一次http://www.memebackstage.com/index/push/pushAString,
http://www.memebackstage.com/index/push/targetpage 页面就会再被推送一次
TP5+web-msg-sender实现即时推送(即时站内信)_第4张图片
注意
在服务器上的话别忘了在安全组开端口(入方向);并重启服务器
如果服务器是windows,要把PHP路径加到环境变量,并重启服务器。
因为我是Windows服务器,Linux没有测,以后会补上
至此完毕 。

转载自 :https://my.oschina.net/inuxor/blog/737863#comment-list
https://blog.csdn.net/h330531987/article/details/78081392
参考资料(有用必读)
http://www.ptbird.cn/web-msg-sender-send-content.html
https://www.workerman.net/web-sender

你可能感兴趣的:(TP5)