位置: 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修改)

  • 怎样用视频网络推广呢(怎样用视频网络直播)

    怎样用视频网络推广呢(怎样用视频网络直播)

  • 企业微博营销推广 发布什么样的信息用户体验最好(企业微博营销有哪些运作模式)

    企业微博营销推广 发布什么样的信息用户体验最好(企业微博营销有哪些运作模式)

  • 支付宝没绑定银行卡可以收款么(支付宝没绑定银行卡一年限额多少)

    支付宝没绑定银行卡可以收款么(支付宝没绑定银行卡一年限额多少)

  • 红米k30pro整机重量是多少(红米k30pro整机重量)

    红米k30pro整机重量是多少(红米k30pro整机重量)

  • 6swifi老说密码错误(6spluswifi老说密码错误)

    6swifi老说密码错误(6spluswifi老说密码错误)

  • 三星手机屏幕出现英文字母无法关机(三星手机屏幕出现彩色条纹)

    三星手机屏幕出现英文字母无法关机(三星手机屏幕出现彩色条纹)

  • 华为手机如何下载微信(华为手机如何下载ins)

    华为手机如何下载微信(华为手机如何下载ins)

  • 看不到朋友圈背景图是被拉黑了吗(看不到朋友圈背景墙是什么意思)

    看不到朋友圈背景图是被拉黑了吗(看不到朋友圈背景墙是什么意思)

  • 60v锂电池充满电电压是多少(60V锂电池充满电是多少)

    60v锂电池充满电电压是多少(60V锂电池充满电是多少)

  • 腾讯会议正在使用麦克风是什么意思(腾讯会议正在使用蓝牙)

    腾讯会议正在使用麦克风是什么意思(腾讯会议正在使用蓝牙)

  • ipad发烫怎么解决(ipad非常烫)

    ipad发烫怎么解决(ipad非常烫)

  • 写字板是字处理软件吗(写字板是字处理软件吗,能进行图文处理吗)

    写字板是字处理软件吗(写字板是字处理软件吗,能进行图文处理吗)

  • 微信刷脸支付怎么关闭(微信刷脸支付怎么代理加盟)

    微信刷脸支付怎么关闭(微信刷脸支付怎么代理加盟)

  • iphone怎么清理手机垃圾(iphone怎么清理手机存储)

    iphone怎么清理手机垃圾(iphone怎么清理手机存储)

  • iphonex出厂系统是多少(iphonex出厂设置在哪里)

    iphonex出厂系统是多少(iphonex出厂设置在哪里)

  • 微信预留电话怎么改(微信预留电话对的但是显示不对)

    微信预留电话怎么改(微信预留电话对的但是显示不对)

  • wlan和wifi的区别(wlan和wifi的区别ipad哪个好)

    wlan和wifi的区别(wlan和wifi的区别ipad哪个好)

  • x27没有面部解锁吗(vivox27设置里没有面部解锁怎么设置)

    x27没有面部解锁吗(vivox27设置里没有面部解锁怎么设置)

  • tt语音怎么开始游戏(tt语音怎么语音)

    tt语音怎么开始游戏(tt语音怎么语音)

  • 借条怎么写有法律效力(借条怎么写有法律效力范本长期有效)

    借条怎么写有法律效力(借条怎么写有法律效力范本长期有效)

  • phpcms怎么修改后台文章排序(phpcms默认密码)

    phpcms怎么修改后台文章排序(phpcms默认密码)

  • 织梦dede专题不同节点不能选取同样文章的解决方法(织梦专题页模板)

    织梦dede专题不同节点不能选取同样文章的解决方法(织梦专题页模板)

  • 研发支出属于什么现金流量项目
  • 代扣个人借款分录
  • 增值税纳税期限1日是什么意思
  • 应交增值税二级科目借贷方向
  • 一般纳税人的增值税征收方式的特点是
  • 应收票据属于其他应收账款吗
  • 最近的火车票代售点
  • 小规模纳税人印花税是季报还是月报
  • 行政单位上年度费用做多了怎么调整成本
  • 回迁房的交易流程
  • 公户可以在淘宝下单吗
  • 银行现金解款单回单怎么填
  • 报销跨月还能报销吗
  • 公司固定资产丢失谁负责
  • 实习生需要缴纳个税吗?
  • 补计提去年的增值税
  • 航天开票系统清单流程
  • 公司以银行存款名义为员工垫付医疗费分录怎么写
  • 京挑客怎么赚钱
  • win11我的电脑不在桌面显示
  • 申报个税和缴纳个税一样吗
  • 个人以房产投资一人有限公司时,房产要开发票吗
  • 硬盘分区的原则主要有哪些
  • PHP:xml_set_external_entity_ref_handler()的用法_XML解析器函数
  • php 如何下载
  • 笔记本thinkbook14
  • yoosee怎么安装
  • php数组函数输出《咏雪》里有多少"片"字
  • msqry32.exe进程是什么文件 作用是什么 msqry32进程查询
  • 禁止input标签输入
  • tim模块
  • 汇算清缴哪些表必填
  • 更改公司章程发函怎么写
  • 商标个性设计
  • 即征即退增值税怎么申报
  • 企业年度报告内容
  • 企业所得税申报表A类
  • 三联专用发票每一联分别给谁
  • java web中的转发和重定向
  • index.php怎么修改
  • 待抵扣进项税额和进项税额的区别
  • 酒的增值税专票可抵扣不
  • 普票3个点可以抵扣吗
  • 小规模增值税减征额怎么算
  • 开具劳务费发票的资料
  • 账上没有实收资本
  • 公账转给员工工资情况说明怎么写
  • 收到提供劳务的收入
  • 什么叫固定资产台账
  • 盘亏的设备要进仓库吗
  • 上月暂估的成本这月收到票怎么做
  • 项目支付预缴税额怎么算
  • 发明专利权限的期限是多少年
  • 一家新成立的贸易企业
  • 所得税汇算清缴前取得跨年发票
  • 股权投资如何记账
  • 怎样贴发票之类的报销单据
  • 小规模减半征收房产税文件
  • 利润所属科目
  • 工业企业预提费用怎么算
  • win8.1补丁打不上
  • 安装nfs命令
  • bios设置的完整说法
  • sccenter.exe - sccenter是什么进程 有什么用
  • linux拉起进程
  • win10 outlook邮箱设置教程
  • cocos2d游戏引擎
  • android skia opengl
  • 安卓专业图片处理软件
  • cocos3.0
  • Node.js中的construct
  • js window.open如何带参数
  • python 生成器send
  • 在windows 10中
  • 编写js代码要注意什么
  • jquery根据name
  • 国家税务总局山西省电子税务局
  • 如何开具红字发票明细
  • 中国税务网官网1732171695993732.2418.61431871
  • 电信部门可以知道通话内容吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设