php 实时消息通知推送 tp5 websocket web-msg-sender

1.本次应用场景

当用户在前端提交有新的订单时
后台管理页面实时接收订单消息并进行通知

2.处理 引用 webmsgsender

基于 web-msg-sender 进行实时消息的推送
web-msg-sender 是基于 PHPSocket.io 开发的,而 PHPSocket.io 是基于 workerman 开发的。

多浏览器支持
支持针对单个用户推送消息
支持向所有用户推送消息
长连接推送(websocket或者comet),消息即时到达
支持在线用户数实时统计展示
支持在线页面数实时统计展示
支持跨域推送

3.资源下载

	[web_sender](https://www.workerman.net/web-sender)

4.代码

   将下载的web-msg-sender 放入 vendor下面
   启动:linux系统cd到到框架目录里运行php start.php start -d。
        windows系统进入到框架目录里双击start_for_win.bat文件启动。
  //发送socket消息
    public function socket($user_id){
        // 指明给谁推送,为空表示向所有在线用户推送
        $to_uid = $user_id;
       
        //获取http协议
  		 $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
  		 
		 // 推送的url地址,上线时改成自己的服务器地址
        $push_api_url =$this->getHttpType().$_SERVER['SERVER_ADDR'].":2121/";
        $post_data = array(
            'type' => 'publish',
            'content' => '有新的订单',
            'to' => $to_uid,
        );
        $ch = curl_init ();
        curl_setopt ( $ch, CURLOPT_URL, $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, $post_data );
        $return = curl_exec ( $ch );
        curl_close ( $ch );
        //var_export($return);

    }
<!--<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>-->
<script type="text/javascript">

    // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    var socket = io("这是ip"+':2120');
    // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    uid = '$user_id'; //后端指定的user_id
    // socket连接后以uid登录
    socket.on('connect', function(){
        socket.emit('login', uid);
    });
    // 后端推送来消息时
    socket.on('new_msg', function(msg){
        console.log(msg);
        //浏览器通知
        if (window.Notification) {
            if(window.Notification && Notification.permission !== "denied") {
                Notification.requestPermission(function(status) {
                    var n = new Notification('通知', { body: '有新的申请!' });
                });
            }
        }
    });
    // 后端推送来在线数据时
    socket.on('update_online_count', function(online_stat){
        console.log(online_stat);
    });
</script>
安装Docker安装插件,可以按照以下步骤进行操作: 1. 首先,安装Docker。可以按照官方文档提供的步骤进行安装,或者使用适合您操作系统的包管理器进行安装。 2. 安装Docker Compose插件。可以使用以下方法安装: 2.1 下载指定版本的docker-compose文件: curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2.2 赋予docker-compose文件执行权限: chmod +x /usr/local/bin/docker-compose 2.3 验证安装是否成功: docker-compose --version 3. 在安装插件之前,可以测试端口是否已被占用,以避免编排过程中出错。可以使用以下命令安装netstat并查看端口号是否被占用: yum -y install net-tools netstat -npl | grep 3306 现在,您已经安装Docker安装Docker Compose插件,可以继续进行其他操作,例如上传docker-compose.yml文件到服务器,并在服务器上安装MySQL容器。可以参考Docker的官方文档或其他资源来了解如何使用DockerDocker Compose进行容器的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装docker-compose插件](https://blog.youkuaiyun.com/qq_50661854/article/details/124453329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker安装MySQL docker安装mysql 完整详细教程](https://blog.youkuaiyun.com/qq_40739917/article/details/130891879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值