融云PC端开发者文档

引入

在public的index.html下引入
<script src="https://cdn.ronghub.com/RongIMLib-2.5.0.min.js"></script>
<script src="https://cdn.ronghub.com/RongEmoji-2.2.7.min.js"></script>
<script src="https://cdn.ronghub.com/rong-sticker-1.0.0.min.js"></script>

初始化

在需要使用IM通讯的页面引入即可

export function rongyunInit(){//融云初始化RongIMLib.RongIMClient.init('IM密钥');//表情库初始化RongIMLib.RongIMEmoji.init();// 连接状态监听器RongIMClient.setConnectionStatusListener({onChanged: function (status) {// status 标识当前连接状态switch (status) {case RongIMLib.ConnectionStatus.CONNECTED:console.log('链接成功');break;case RongIMLib.ConnectionStatus.CONNECTING:console.log('正在链接');break;case RongIMLib.ConnectionStatus.DISCONNECTED:console.log('断开连接');break;case RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT:console.log('其他设备登录');break;case RongIMLib.ConnectionStatus.DOMAIN_INCORRECT:console.log('域名不正确');break;case RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE:console.log('网络不可用');break;}}});// 消息监听器RongIMClient.setOnReceiveMessageListener({// 接收到的消息onReceived: function (message) {// 判断消息类型switch(message.messageType){case RongIMClient.MessageType.TextMessage:// message.content.content => 文字内容// console.log(message)break;case RongIMClient.MessageType.VoiceMessage:console.log(message)// message.content.content => 格式为 AMR 的音频 base64break;case RongIMClient.MessageType.ImageMessage:console.log(message)// message.content.content => 图片缩略图 base64// message.content.imageUri => 原图 URLbreak;case RongIMClient.MessageType.LocationMessage:console.log(message)// message.content.latiude => 纬度// message.content.longitude => 经度// message.content.content => 位置图片 base64break;case RongIMClient.MessageType.RichContentMessage:console.log(message)// message.content.content => 文本消息内容// message.content.imageUri => 图片 base64// message.content.url => 原图 URLbreak;case RongIMClient.MessageType.InformationNotificationMessage:console.log(message)// do somethingbreak;case RongIMClient.MessageType.ContactNotificationMessage:console.log(message)// do somethingbreak;case RongIMClient.MessageType.ProfileNotificationMessage:console.log(message)// do somethingbreak;case RongIMClient.MessageType.CommandNotificationMessage:console.log(message)// do somethingbreak;case RongIMClient.MessageType.CommandMessage:console.log(message)// do somethingbreak;case RongIMClient.MessageType.UnknownMessage:// console.log(message)break;default:// do somethingconsole.log(message)}}});var token = localStorage.im_token//连接服务器RongIMClient.connect(token, {onSuccess: function(userId) {console.log('连接服务器成功:' + userId);},onTokenIncorrect: function() {console.log('token 无效');},onError: function(errorCode){var info = '';switch (errorCode) {case RongIMLib.ErrorCode.TIMEOUT:info = '超时';break;case RongIMLib.ConnectionState.UNACCEPTABLE_PAROTOCOL_VERSION:info = '不可接受的协议版本';break;case RongIMLib.ConnectionState.IDENTIFIER_REJECTED:info = 'appkey不正确';break;case RongIMLib.ConnectionState.SERVER_UNAVAILABLE:info = '服务器不可用';break;}console.log(info);}
});//是否设置重新连接var callback = {onSuccess: function(userId) {console.log('Reconnect successfully. ' + userId);},onTokenIncorrect: function() {console.log('token无效');},onError: function(errorCode){console.log(errorCode);}};var config = {// 默认 false, true 启用自动重连,启用则为必选参数auto: true,// 网络嗅探地址 [http(s)://]cdn.ronghub.com/RongIMLib-2.2.6.min.js 可选url: 'cdn.ronghub.com/RongIMLib-2.2.6.min.js',// 重试频率 [100, 1000, 3000, 6000, 10000, 18000] 单位为毫秒,可选rate: [100, 1000, 3000, 6000, 10000]};RongIMClient.reconnect(callback, config);
}

查看历史消息

export function getChatRecord(obj){if(obj.type == 1){var conversationType = RongIMLib.ConversationType.PRIVATE; // 单聊, 其他会话选择相应的会话类型即可}else {var conversationType = RongIMLib.ConversationType.GROUP; }var targetId = obj.id; // 想获取自己和谁的历史消息,targetId 赋值为对方的 Idvar timestrap = null; // 默认传 null,若从头开始获取历史消息,请赋值为 0, timestrap = 0;if(obj.isHead){timestrap = 0}var count = 20; // 每次获取的历史消息条数,范围 0-20 条,可以多次获取RongIMLib.RongIMClient.getInstance().getHistoryMessages(conversationType, targetId, timestrap, count, {onSuccess: function(list, hasMsg) {// list => Message 数组。// hasMsg => 是否还有历史消息可以获取。},onError: function(error) {console.log('GetHistoryMessages, errorcode:' + error);}});
}

清除历史消息

export function clearChatRecord(id){var params = {conversationType: RongIMLib.ConversationType.PRIVATE, // 会话类型targetId: id + '', // 目标 Idtimestamp: store.state.msgInfo.msgArr[store.state.msgInfo.msgArr.length - 1].sentTime // 清除时间点};RongIMLib.RongIMClient.getInstance().clearRemoteHistoryMessages(params, {onSuccess: function() {// 清除成功store.commit('msgArr' , {})},onError: function(error) {// 请排查:单群聊消息云存储是否开通console.log(error);}});
}

发送消息

export function sendMessage(obj){//发送消息var msg = new RongIMLib.TextMessage({ content: obj.value, extra: obj.type });if(obj.type == 1){var conversationType = RongIMLib.ConversationType.PRIVATE; // 单聊, 其他会话选择相应的会话类型即可}else{var conversationType = RongIMLib.ConversationType.GROUP; // 单聊, 其他会话选择相应的会话类型即可}var targetId = obj.id  // 目标 Id// console.log(obj)RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, {onSuccess: function (message) {// message 为发送的消息对象并且包含服务器返回的消息唯一 Id 和发送消息时间戳// console.log('发送成功' ,  message);},onError: function (errorCode, message) {var info = '';switch (errorCode) {case RongIMLib.ErrorCode.TIMEOUT:info = '超时';break;case RongIMLib.ErrorCode.UNKNOWN:info = '未知错误';break;case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:info = '在黑名单中,无法向对方发送消息';break;case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:info = '不在讨论组中';break;case RongIMLib.ErrorCode.NOT_IN_GROUP:info = '不在群组中';break;case RongIMLib.ErrorCode.NOT_IN_CHATROOM:info = '不在聊天室中';break;}console.log('发送失败: ' + info + errorCode);}});
}

获取未读消息

export function getUnReadMsg(obj){// var conversationType = ''// if(obj.type == 1){//     var conversationType = RongIMLib.ConversationType.PRIVATE; // 单聊, 其他会话选择相应的会话类型即可// }else {//     var conversationType = RongIMLib.ConversationType.GROUP; // }// console.log(obj)var getUnreadCount = RongIMClient.getInstance().getUnreadCount;getUnreadCount(obj.type,obj.id,{onSuccess:function(count) {//count 会话未读数// console.log(count)store.commit('unReadMsgFn' , count)},onError:function(error){console.log(error)}});
}

清除已读消息数

export function clearReadMsg(obj){if(obj.type == 1){var conversationType = RongIMLib.ConversationType.PRIVATE; // 单聊, 其他会话选择相应的会话类型即可}else {var conversationType = RongIMLib.ConversationType.GROUP; }var clearUnreadCount = RongIMClient.getInstance().clearUnreadCount;clearUnreadCount(conversationType, obj.id, {onSuccess: function () {// console.log('清除成功')},onError: function (errorCode) {console.log(errorCode)}});
}

PC端使用融云IM即时通讯相关推荐

  1. 融云 web 即时通讯

    融云 web 即时通讯 ☺ 官网https://www.rongcloud.cn/?utm_source=baiduBrand&utm_term=rongyun 老版本但更为详细的开发文档ht ...

  2. 基于融云的即时通讯开发(一)

    一.概述 现在的应用中,即时通讯功能已经很普遍了,从这篇文章开始,我们以第三方平台融云的服务为基础,研究一下如何开发一个具有及时通信功能的软件. 首先,进入融云的官网,地址如下: http://ron ...

  3. 兼具高效与易用,融云 IM 即时通讯长连接协议设计思路

    无论是 PC 端还是移动端,接入网络实现通信都需要建立双端的连接.关注[融云全球互联网通信云]了解更多 客户端和服务端建立连接后不断开,然后进行通信(也就是发送报文)的方式就是长连接. 与之相反,短连 ...

  4. 融云RongIMKit即时通讯开发(让我们聊起来)

    1.前言 现在APP功能越来越多,聊天成为很重要的一个功能,现在市面上流行的即时通讯SDK基本上只有融云和环信,而近年来融云在各个方面都有超过环信的趋势,所以在项目中用到融云的地方越来越多.那我们是不 ...

  5. iOS---集成融云SDK即时通讯

    链接:https://www.jianshu.com/p/eabfb0a93cf9 相信大家在项目中会用到即时通讯功能,自己去写的话会需要前后台合作,会大大加大开发的周期,所以考虑使用第三方的即时通讯 ...

  6. apicloud+融云实现即时通讯

    请尊重作者的辛勤劳动!!! 使用apicloud开发已经快2个月了,起初的目的就是为了实现安卓和苹果的兼容,属于一个试验项目,究竟apicloud是否能够满足公司的要求?最 终看来还是不错的,使用ap ...

  7. 30 分钟集成融云 IM 即时通讯

    最近公司要做一个社交 app,对于时间就是金钱的当今社会,招聘大量人才去搭建通讯系统肯定是不划算的,花费人力物力财力做出来的 app,可能还没人用.那就瞎了.所以毋庸置疑,一拍即合,用第三方的.就开始 ...

  8. pc端使用融云做直播推流和拉流(因Chrome 93 版本开始不再支持 plan-b 协议、改为RCRTCAdapter 桥接版本)

    详细的可以访问融云文档 地址:https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/audience/web.html 一.推流 & ...

  9. 融云 IM 即时通讯的跨应用通信能力

    我们常用"跨服聊天"来形容不在统一频道.无法顺畅沟通的鸡同鸭讲现象.关注[融云全球互联网通信云]了解更多 仅一字之差,在通信能力中,"跨 App 聊天"功能则代 ...

最新文章

  1. 【记录】我在团队合作中遇到过的胎神(扑街仔)级别前端小伙伴 之 莫名其妙配置0.0.0.0这种IP访问
  2. 数据库配置下拉框没有数据库可选
  3. oracle控制文件都一样么,Oracle控制文件详解
  4. Oracle导入报错:ORA-01653表 无法通过 128 (在表空间 MY_BASE_DATA 中) 扩展
  5. 输入输出(Input and Output)
  6. jzoj3626-[LNOI2014]LCA【树链剖分,线段树】
  7. 导出mysql某个表数据_MYSQL使用mysqldump导出某个表的部分数据
  8. mysql----------mysql5.7如何配置主从数据库
  9. 基于Tensorflow针对cifar数据集运用卷积神经网络解决100类图片的分类问题。
  10. 有哪些值得实力推荐的高评分经典电影,VIP视频解析网站推荐十部
  11. 输入表重建工具ImportREC
  12. 鼠标右键转圈圈_Win7系统桌面鼠标右键一直转圈不能用的解决方法
  13. matlab-线性代数 det 各阶主子式、余子式、代数余子式
  14. Mac如何通过远程控制其他Mac
  15. 数据结构 插入排序(InsertionSort Sort) 详解 附C++代码实现:
  16. 为什么以及如何通过机器人学习编程和项目实践
  17. 无线Mesh网络的优点总结
  18. hadoop之常见命令
  19. 如何获取瘦人肠道菌群_如何通过吃喝来改变肠道菌群,从而达到抑制肥胖的效果?...
  20. 【Microsoft Azure 的1024种玩法】三十. 使用Azure Data Studio之快速上手连接管理Azure SQL 数据库(一)

热门文章

  1. 【ArcGIS】删除区划界线中的重叠部分
  2. java 处理换行符_Java 文件换行符识别与转换
  3. spring切面注解失效
  4. 虚幻四Gameplay Ability System入门(9)-神罗天征!TargetActor
  5. Kali Linux 系统安装TOP和微劈嗯
  6. sntp服务器位置,sntp的服务器地址
  7. AD20 快捷键设置
  8. Ubuntu20.04服务器重装系统后从头进行环境配置
  9. IDEA Swagger 配置
  10. 输入url到页面显示发生了什么?