位置: IT常识 - 正文

小程序如何集成即构IM实现即时通讯发消息聊天(小程序集合软件)

编辑:rootadmin
之前的文章已经介绍了如何实现Web端的即时通讯IM,为了让大家全面的体验通信互动的快乐。本文介绍如何使用 ZIM SDK 快速实现实现小程序端的基本的消息收发功能,在微信中实现一个mini版微信,也就是常见的聊天功能。 ...

推荐整理分享小程序如何集成即构IM实现即时通讯发消息聊天(小程序集合软件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:小程序如何集成chatGPT,app集成小程序,微信小程序集成,小程序持续集成,小程序如何集成推广,小程序集成小程序,小程序如何集成商业模式,小程序如何集成商家,内容如对您有帮助,希望把文章链接给更多的朋友!

之前的文章已经介绍了如何实现Web端的即时通讯IM,为了让大家全面的体验通信互动的快乐。

本文介绍如何使用 ZIM SDK 快速实现实现小程序端的基本的消息收发功能,在微信中实现一个mini版微信,也就是常见的聊天功能。

1 方案介绍

ZIM SDK 提供了如下接入方案:

在此方案中,您需要通过您自己的业务系统实现以下业务逻辑:

搭建客户端的用户管理逻辑,并下发用户 ID 用于客户端登录。鉴权 Token,建议由您的业务后台自行实现,保证鉴权数据安全。2 项目准备2.1 创建项目

进入即构官网,在【ZEGO控制台】创建项目,并申请有效的 AppID,这一步很关键,appid为应用的唯一标识,如身份证号,是应用的身份证明,用于明确你的项目及组织身份。zego提供的服务也是基于APP ID;

App ID的获取方式很简单,只需3~5分钟,在即构官网-我的项目-创建即可。创建的项目信息可用于SDK的集成和配置;

2.2 Token 鉴权登录房间时必须 使用 Token 鉴权 ,可参考 Token 鉴权教程为了方便开发阶段的调试,开发者可直接在 ZEGO 控制台获取临时Token(有效期为 24 小时) 来使用,详情请参考 控制台(新版) - 项目管理 中的 “项目信息”。2.3 服务器域名配置

请在 微信公众平台 上进行 服务器域名配置。选择“小程序后台 > 开发 > 开发设置 > 服务器域名”菜单,按照协议分类,将以下 Server 地址填写到指定的 “request合法域名” 或 “socket合法域名” 中。

3 集成 SDK3.1 新建项目

请参考 微信开放文档 - 开始 创建一个微信小程序。

3.2 导入 SDK

使用 npm 获取 SDK1.执行 npm i zego-zim-miniprogram 命令安装依赖。

2.导入 SDK。

import { ZIM } from 'zego-zim-miniprogram';小程序如何集成即构IM实现即时通讯发消息聊天(小程序集合软件)

const ZIM = require('zego-zim-miniprogram').ZIM;4 实现基本收发消息

以下流程中,我们以客户端 A 和 B 的消息交互为例,实现 1v1 通信功能:

API的正确调用时序是保证消息实时发送和接收的关键,也是用户实时“交互”体验的重要因素。故开发者需按照以下完整时序图进行调用:

4.1 实现流程1. 创建 ZIM 实例

首先我们需要在项目中创建 ZIM 实例,一个实例对应的是一个用户,表示一个用户以客户端的身份登录系统。例如,客户端 A、B 分别调用 create 接口,创建了 A、B 的实例:

// 创建 ZIM 对象,传入 AppIDvar appID = xxxx;var zim = ZIM.create(appID)2. 监听回调事件

在客户端登录前,开发者可以通过调用 on 接口,自定义 ZIM 中的事件回调,接收到 SDK 异常、消息通知回调等的通知。

// 错误消息回调zim.on('error', function (zim, errorInfo) { console.log(errorInfo.code, errorInfo.message);});// 连接状态变更回调zim.on('connectionStateChanged', function (zim, state, event, extendedData) { console.log(state, event, extendedData);});// 房间状态变更回调zim.on('roomStateChanged', function (zim, state, event, extendedData, roomID) { console.log(roomID, state, event, extendedData);});// 成员加入房间回调zim.on('roomMemberJoined', function (zim, memberList, roomID) { console.log(memberList, roomID);});// 成员离开房间回调zim.on('roomMemberLeft', function (zim, memberList, roomID) { console.log(memberList, roomID);});// 收到房间消息回调zim.on('receiveRoomMessage', function (zim, messageList, fromRoomID) { console.log(messageList, fromRoomID);});// 收到单聊通信的消息回调zim.on('receivePeerMessage', function (zim, messageList, fromUserID) { console.log(messageList, fromUserID);});// 令牌即将过期的提醒回调zim.on('tokenWillExpire', function (zim, second) { console.log(second); // 可以在这里调用 renewToken 接口来更新 token // 新 token 生成可以参考上文 zim.renewToken(token) .then(function(token){ // 更新成功 }) .catch(function(err){ // 更新失败 })});3. 登录 ZIM

创建实例后,客户端 A 和 B 需要登录 ZIM,只有登录成功后才可以开始发送、接收消息、更新 Token 等。客户端需要使用各自的用户信息和 Token 进行登录。调用 login 接口进行登录,传入用户信息 ZIMUserInfo 对象。

// 登录时,需要开发者 按照 基础功能中的 "使用 Token 鉴权" 文档生成 token 即可// userID 和 userName,最大 32 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'。var userInfo = { userID: '', userName: '' };var token = '';zim.login(userInfo, token) .then(function () { // 登录成功 }) .catch(function (err) { // 登录失败 });4. 发送消息

客户端 A 登录成功后,可以向客户端 B 发送消息。目前 ZIM 支持的消息类型如下:

消息类型说明ZIMMessage基类消息,包含如下属性:priority:消息优先级。type:消息类型。messageID:标识这条消息的唯一 ID。timestamp:发送时间。message:消息内容。senderUserID:消息发送者。conversationID:会话的 ID。conversationType:会话类型。ZIMTextMessage文本消息,是在基类的基础上添加了一个 String 类型的 “message” 参数,消息大小不超过 32 KB,发送频率限制为 10 次/秒。ZIMCommandMessage开发者可自定义数据类型的信令消息。信令消息是在基类的基础上添加了一个 Byte/Data 类型的 “message” 参数,消息大小不超过 5 KB,发送频率限制为 20 次/秒。

客户端 A 可以调用 sendPeerMessage 接口,传入客户端 B 的 userID、消息内容等信息,即可发送一条消息到 B 的客户端。

// 发送单聊通信的信息var messageObj = { priority: 1, type: 1, message: '消息内容' };var toUserID = '';zim.sendPeerMessage(messageObj, toUserID) .then(function (message) { // 发送成功 }) .catch(function (err) { // 发送失败 });5. 接收消息

客户端 B 登录 ZIM 后,将会收到在 on 回调中设置的 receivePeerMessage 监听接口,收到客户端 A 发送过来的消息。

// 收到单聊通信的消息回调zim.on('receivePeerMessage', function (zim, messageList, fromUserID) { console.log(messageList, fromUserID);});6. 退出登录

如果客户端需要退出登录,直接调用 logout 接口即可。

zim.logout();7. 销毁 ZIM 实例

如果不需要 ZIM 实例,可直接调用 destroy 接口,销毁实例 。

zim.destroy();结语:

到这里,你已经完成了IM基本收发消息功能,快去找你的小伙伴互发消息吧~

ZEGO 提供 ZIM + RTC 服务联动的场景解决方案,公开语聊房、秀场 直播等业务场景搭建的示例源码,帮助开发者能在极短的时间内搭建完美的业务场景。

同时ZIM提供免费体验版,点击联系商务获取体验资格,了解更多优惠活动;获取Demo、开发文档、技术支持,访问即构文档中心;注册即构ZEGO开发者帐号,快速开始...

本文链接地址:https://www.jiuchutong.com/zhishi/312976.html 转载请保留说明!

上一篇:JS中与运算,或运算归纳理解(js与或运算符)

下一篇:织梦模板dedecms列表页隔行/多行随意换色换样式代码(织梦模板首页logo修改)

  • 做好微信运营需要具备的能力(微信运营的好处)

    做好微信运营需要具备的能力(微信运营的好处)

  • 如何解除word文档保护密码(如何解除word文档锁定的内容)

    如何解除word文档保护密码(如何解除word文档锁定的内容)

  • 钉钉高级认证有什么用(钉钉高级认证有什么特殊功能)

    钉钉高级认证有什么用(钉钉高级认证有什么特殊功能)

  • iphone11设置闹钟不响(iphone11设置闹钟铃声大小)

    iphone11设置闹钟不响(iphone11设置闹钟铃声大小)

  • 微信如何添加店员收款通知(微信如何添加店铺定位位置)

    微信如何添加店员收款通知(微信如何添加店铺定位位置)

  • 钉钉怎么看会议视频回放(钉钉怎么看会议数据)

    钉钉怎么看会议视频回放(钉钉怎么看会议数据)

  • 华为telan00a是什么型号(华为telan00a与telan00)

    华为telan00a是什么型号(华为telan00a与telan00)

  • 三星音乐为什么停运(三星音乐为什么连接不上去)

    三星音乐为什么停运(三星音乐为什么连接不上去)

  • 设备管理器里无线网卡没了(设备管理器里无线网卡被隐藏)

    设备管理器里无线网卡没了(设备管理器里无线网卡被隐藏)

  • 您拨打的用户忙请稍后再拨什么意思(打电话语音说您拨打的用户忙)

    您拨打的用户忙请稍后再拨什么意思(打电话语音说您拨打的用户忙)

  • icloud储存空间升级没反应(icloud储存空间升级不了)

    icloud储存空间升级没反应(icloud储存空间升级不了)

  • 苹果id共用能看到浏览网页吗(苹果id共用能看见safari浏览网页吗)

    苹果id共用能看到浏览网页吗(苹果id共用能看见safari浏览网页吗)

  • 华为荣耀9x微信视频怎么美颜(华为荣耀9X微信分身在哪里)

    华为荣耀9x微信视频怎么美颜(华为荣耀9X微信分身在哪里)

  • 充电器电流大对电池有什么影响(充电器电流大对手机影响大还是电压大对手机影响大)

    充电器电流大对电池有什么影响(充电器电流大对手机影响大还是电压大对手机影响大)

  • vivo下载管理器在哪里打开(vivo浏览器下载安装)

    vivo下载管理器在哪里打开(vivo浏览器下载安装)

  • lcd和ips屏的区别(ips屏幕哪个好)

    lcd和ips屏的区别(ips屏幕哪个好)

  • 港版iphone11支持电信吗(港版的苹果11)

    港版iphone11支持电信吗(港版的苹果11)

  • 苹果耳机掉了怎么找(苹果耳机掉了怎么查找位置)

    苹果耳机掉了怎么找(苹果耳机掉了怎么查找位置)

  • 黑鲨2pro支不支持无线充电(黑鲨2pro支不支持NFC)

    黑鲨2pro支不支持无线充电(黑鲨2pro支不支持NFC)

  • 什么是结构化程序设计(什么是结构化程序)

    什么是结构化程序设计(什么是结构化程序)

  • 抖音变老的道具是哪个(抖音变老道具在哪里)

    抖音变老的道具是哪个(抖音变老道具在哪里)

  • cad怎么取消上一步(CAD怎么取消上一步)

    cad怎么取消上一步(CAD怎么取消上一步)

  • 苹果的otg开关在哪

    苹果的otg开关在哪

  • 快手里的红心在哪里点(快手里面的红心是干什么用的)

    快手里的红心在哪里点(快手里面的红心是干什么用的)

  • vivoy93有没有指纹锁(vivoy93指纹识别在哪)

    vivoy93有没有指纹锁(vivoy93指纹识别在哪)

  • 如何禁用或隐藏Win11开始菜单中的推荐部(怎么隐藏权限)

    如何禁用或隐藏Win11开始菜单中的推荐部(怎么隐藏权限)

  • 【YOLOv7】主要改进点详解(yolov4参数设置)

    【YOLOv7】主要改进点详解(yolov4参数设置)

  • 加工企业怎么记账
  • 销项负数发票是代表交易没有成功吗?
  • 贷款受托支付可以给股东吗
  • 外管证过期了一个月罚款多少
  • 过路费可以入账吗
  • 商品流通企业应收账款很少的原因
  • 接受捐赠计入什么费用
  • 债券的投资收益率
  • 收付转记凭证如何填写例题
  • 营改增后不动产租赁税率
  • 无形资产换出
  • 销售额增加10%什么概念
  • 公司租赁厂房开几个点发票
  • 房屋租赁的税收政策
  • 专票税率开错了有什么影响
  • 个人申请税务局开技术服务发票如何收费
  • 人防设施建设费
  • 旅游业开办费
  • 公司注销无法支付的款项如何处理
  • 内部存货交易的抵消分录例题讲解
  • 劳务派遣公司差额征税怎么申报
  • 存货资产减值损失转回怎么做账
  • 购入办公桌椅怎样入账
  • 出口视同内销的账务处理?
  • 评估增值资产如何记账
  • 怎么在bios里设置usb开关
  • win10专业版用户名和密码怎么取消
  • 代办营业执照费用税务编码是多少
  • 电脑桌面换壁纸的软件
  • 税款缴纳期初未缴税额
  • 本期应计提坏账损失700元调整前坏账准备贷方余额500元
  • 产品成本计算的分类法适用于( )
  • 商誉准则最新修订时间
  • 最强alpha什么意思
  • vue.js简介
  • 为什么要结转成本?
  • 库存盘点差异分录
  • 应收及预付款项的思维导图
  • 对c++的认识与体会
  • Discus X 3 门户改造熊掌号网页教程
  • 购买债券的利息会计分录
  • 外资企业是否属于国企
  • 以房租入股公司怎么交税
  • 企业的资产必须符合哪些条件
  • 被投资公司注销把钱转到投资公司怎么做帐
  • 一般纳税人购销合同印花税减免政策
  • 合伙企业要不要每月做账?报税是不是与一般的有限公司一样,每月申报纳税吗?
  • 小规模纳税人运输费计入什么科目
  • sql2000数据迁移到2008
  • 小企业长期债券投资交易费用
  • 盈利和亏损怎么计算
  • 开发研究的定义
  • 上市公司发放现金的规定
  • 扫码开票软件
  • 电子增值税发票样本
  • 所得税需要转本吗
  • 收到免税发票会计分录
  • 发现错账后进行错账更正的方式
  • 如何做大建筑业企业
  • 盈余公积金计算方法
  • 私营公司应付工资的规定
  • win7资源管理器未响应怎么办
  • phpstudy中phpmyadmin无法访问
  • 在64位的Ubuntu系统上安装32位的WPS的方法
  • linux设置gid
  • mac计算器快捷键
  • linuxnamespace入门
  • win8怎么彻底删除安装的软件
  • win10查看电脑配置显卡
  • win10系统无线网络连接在哪
  • ugui scrollview
  • 深入理解中国式现代化
  • nodejs edge
  • cluster into
  • jsonp如何解决跨域问题
  • python wms
  • 用js改变css样式
  • 现在开票可以不去税务局吗
  • 福建省国税局官网
  • 广州市番禺区国丹信息管理有限公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设