美文网首页
web-msg-sender(socket主动推送)

web-msg-sender(socket主动推送)

作者: 不算程序员 | 来源:发表于2020-07-06 18:30 被阅读0次

    web-msg-sender地址(windows)

    这个逻辑包来自与我对php的websocket了解 由于原声写websocket 更何况我是一个小白 还需要一个段时间不能完成的需求(php websocket 主动推送 还有 php7.3 多线程原因)
    主要应用 : 微信支付完成推送前端数据

    • 我为什么不去谷狗 ?
      集中答案如下
    1. 开启多线程模式
      很简单 看不懂 太高深 短时间内不可能完成 更何况一点都不通的 websocket多线程模式
      在来讲一讲 怎么安装web-msg-sender
      如果没有composer 的话 请先安装这个 composer 官网地址
      composer是PHP的包管理、包依赖关系管理工具(就像node的npm一样),有了它,我们就很轻松一个命令就可以把他人优秀的代码用到我们的项目中来,而且很容易管理依赖关系,更新删除等操作也很轻易的实现。

    安装composer (windows)

    1. 下载安装脚本 - composer-setup.php - 到当前目录: php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
    2. 执行安装过程 : php composer-setup.php
    3. 删除安装脚本 : php -r "unlink('composer-setup.php');"

    局部安装

    上述下载 Composer 的过程正确执行完毕后,可以将 composer.phar 文件复制到任意目录(比如项目根目录下),然后通过 php composer.phar 指令即可使用 Composer 了!

    全局安装

    1. 找到并进入 PHP 的安装目录(和你在命令行中执行的 php 指令应该是同一套 PHP)。
    2. 将 composer.phar 复制到 PHP 的安装目录下面,也就是和 php.exe 在同一级目录。
    3. 在 PHP 安装目录下新建一个 composer.bat 文件,并将下列代码保存到此文件中。
      @php "%~dp0composer.phar" %*
      最后重新打开一个命令行窗口试一试执行 composer --version 看看是否正确输出版本号。

    切换为国内镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com

    • 安装依赖
      composer install
    • 更新所有依赖
      composer update
    • 更新指定的包
      composer update monolog/monolog
    • 更新指定的多个包
      composer update monolog/monolog symfony/dependency-injection
    • 还可以通过通配符匹配包
      composer update monolog/monolog symfony/*

    web-msg-sender 安装及使用

    1. 因为我的项目是moodle系统的二次开发,可能和小伙伴们有些不同 但原理基本一直
    前端代码

    附带上socketio官方地址
    local/localname/amd/**.js

     // 本工程基于AMD模范开发 
      define(['jquery', 'core/ajax','local_wxpay/socketio'], function($, ajax,io) {
       socket = io('http://localhost:2120',{'reconnect':true,'auto connect':true,'force new 
     connection':true});  // 创建
     //reconnect ::  开启重新连接  **非常重要
     //force new connection  ::强制新连接
     //auto connect ::自动连接
     socket.connect();// 开始链接
     // 我这里用到了以下这几个api
     socket.on('disconnect',function() {
           console.log('断开连接');
         });
     }
     socket.on('connect', function(){
           socket.emit('login', 1665);
          //      login :链接字段
          //      1665: 链接id
     });
     socket.on('new_msg', function(msg){
      // 后端推送来消息时
      //  后端接收到相匹配的字段返回的数据 在这里操作逻辑
      ***····**
     }
    // 后端推送来在线数据时 多少人在线
     socket.on('update_online_count', function(online_stat){
           console.log(online_stat);
    });
    
    // ****比较重要 *** 关闭时重新链接
     socket.disconnect();
     socket.on('reconnect', function(){
      console.log('重新连接');
     });
    // 对于初初接触者 可能对这个端口号比较敏感 我会在下文中详细标注
    //'local_wxpay/socketio'  为引用外部socketio
    //与<script src='//cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script> 一致
    //可以打开//cdn.bootcss.com/socket.io/1.3.7/socket.io.js 这个链接 把代码拷到本地
    
    后端代码

    local/localname/utils/socketio.php
    这里代码就比较简洁了 此方法是在微信的回调url的php文件中使用

    <?php
    function test($xmldata,$userid,$ip){
        $to_uid = $userid;
        $jsoninfo = json_encode([status=>true,res=>$xmldata]);
        // 推送的url地址,使用自己的服务器地址  模拟发送请求
        $push_api_url = "http://$ip:2121/";
        $post_data = array(
            "type" => "publish",
            "content" => $jsoninfo,
            "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 );
        curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
        $return = curl_exec ( $ch );
        //    $json = json_decode($return);
        curl_close ( $ch );
        var_export($return);
    }
    // 可自行调用test函数进行调试
    
    

    端口问题

    • 服务端监听端口: 2123
    • 客户端监听端口: 2120
    • 消息推送端口: 2121
    大概就是这个样子
    启用socketio服务

    web-msg-sender-master\start_for_win.bat双击打开这个文件运行项目
    愉快的进行测试吧~

    如果觉得有帮助 请给小编一个star
    你的star✨、点赞和关注是我持续创作的动力!

    相关文章

      网友评论

          本文标题:web-msg-sender(socket主动推送)

          本文链接:https://www.haomeiwen.com/subject/hpzuxktx.html