IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 微信小程序使用swoole实现websocket消息推送 -> 正文阅读

[网络协议]微信小程序使用swoole实现websocket消息推送

swoole我个人建议在linux环境下操作,毕竟在windows下有那么一点点麻烦。首先linux安装php和swoole环境(有手就行,建议百度)。
因为我们的业务是实现消息推送,也就是在完成特定操作时向swoole发送一个请求,然后swoole能够推送回来这条请求到指定的位置。
直接上代码

<?php
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9501);

//监听WebSocket连接打开事件
/**
 * 客户端想服务器发送信息是调用函数
 * $ws   websocket 服务器
 * $request 客户端信息
 * $request->fd 客户端唯一编号
 *
 * */
$ws->on('open', function ($ws, $request) {
    //var_dump($request->fd, $request->get, $request->server);
    //$ws->push($request->fd, "hello, welcome\n");
    echo "connection open:{$request->fd}\n";
    //$ws->push($request->fd, json_encode(['hello','world']));
});

//监听WebSocket消息事件
/**
 * $frame 客户端发送的信息
 * $frame->fd 客户端的唯一编号
 * $frame->data 客户端发送的信息
 * */
$ws->on('message', function ($ws, $frame) {
    //echo "接收到的信息: {$frame->data}\n";
    //$ws->push($frame->fd, "server: {$frame->data}");
    //echo "服务器已接收:【".$frame->fd."】";
    //$ws->push($frame->fd, json_encode(['hello','world'.$frame->data]));


    // 1.客户端发送过来的信息
    $content = $frame->data;
    echo "服务器接收到信息:".$content;
    // 2.讲消息发送个所有客户端
    foreach ($ws->connections as $fd){
        $ws->push($fd,$content);
    }
});

//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
    echo "已断开链接:{$fd}";
});

$ws->start();

然后微信小程序端有个连接websocket的方法,可以写在页面onload中:

wx.connectSocket({
      url: 'ws://你的IP地址:9501/',
      success:res=>{
        console.log(res);
      }
      
    })
wx.onSocketOpen(function (res) {
      socketOpen = true;
      console.log(111)
    })
    //监听 WebSocket 接受到服务器的消息事件
    wx.onSocketMessage(function (res) {
      var result = JSON.parse(res.data)
      var msg=result.msg;
      that.data.message.push(msg)
     //数组转字符串
      var num=that.data.num+1;
      if (result) {
        that.setData({
          num,
        })
        wx.setStorageSync('num', num)
        wx.setStorageSync('message', that.data.message)
        console.log(that.data.message);
        console.log(that.data.num);
      }
    })

以上就是小程序中连接、接收以及处理swoole消息的代码,具体根据自己业务进行更改。
之后我们要给服务端一个触发事件,只要触发事件,就会向服务器发送请求及数据,然后服务器返回到他应去的地方。

//触发事件
send() {
      //服务端通讯 
      if (socketOpen) { //是否正常
        var nickname = wx.getStorageSync('nickName')
        if (nickname == "") {
          nickname = "游客"
        }
        var data = '{"name":"' + nickname + '","msg":"' + inputMessage + '"}'
        //发送数据
        wx.sendSocketMessage({
          data: data
        })
      }
    },

到此核心代码完毕。
我们先来梳理一下流程:
服务端swoole开启–>小程序端onload中连接websocket–>触发事件向服务端推送消息–>onload中监听事件监听到消息存本地展示
OK,没问题

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 10:15:37  更:2021-11-27 10:16:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:52:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码