融云聊天系统的应用

融云IM聊天系统接口调用 融云IM聊天系统接口调用代码调用 代码 /** * 融云聊天获取数据 * * @param $url api地址 * @param $postData 传递数据 */ function getRongClound($url = "", $postData = "") { // 参数为空返回状态 if(empty($url) || empty($postData)) r... 阅读详情

因为产品需求,需要有聊天功能,客服功能。用的是融云的,他把什么方法都集成好了,用起来很方便。并且是免费的。但是第一次接触,并不是那么顺利,并且在网上搜不到相关核心资料,只能硬着头皮看文档,实在没办法就去融云提交工单。深知做前端第一次接触融云不不易,所以我在这梳理一下融云的相关方法。方便和我一样找不着头绪的前端使用。 
1.聊天室的样式(包括消息的气泡)是你自己定义的。融云不提供样式的选择。这样的好处是,方便使用者创建属于自己的聊天样式。这么解释是因为我一开始以为样式不用自己写。 
进入正题: 
1.引入融云相关JS文档,这个不难理解。我建议一定要引最新版本。

        <scriptsrc="http://res.websdk.rongcloud.cn/RongIMClient.emo  ji-0.9.2.min.js">
</script>

2.在初次加载融云中我们所要做的事情:

        RongIMClient.init(APPKEY)//这是初始化,需要填参数就是你的APPKEY。这个不难理解。

3.获取融云的token,这个就不贴代码了,官方文档说的很清楚。 
4.现在有了融云的token,就该链接融云的服务器了。

        RongIMClient.connect(token,
         {
              onSuccess: function(userId) {

              console.log("Login successfully." + userId);
        },
        onTokenIncorrect: function() {
          console.log('token无效');
        },
        onError:function(errorCode){
              var info = '';
              switch (errorCode) {
                case RongIMLib.ErrorCode.TIMEOUT:
                  info = '超时';
                  break;
                case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                  info = '未知错误';
                  break;
                case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION:
                  info = '不可接受的协议版本';
                  break;
                case RongIMLib.ErrorCode.IDENTIFIER_REJECTED:
                  info = 'appkey不正确';
                  break;
                case RongIMLib.ErrorCode.SERVER_UNAVAILABLE:
                  info = '服务器不可用';
                  break;
              }
              console.log(errorCode);
            }
      });

5.设置消息监听器

// 设置连接监听状态 ( status 标识当前连接状态)
 // 连接状态监听器
 RongIMClient.setConnectionStatusListener({
    onChanged: function (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.NETWORK_UNAVAILABLE:
              console.log('网络不可用');
              break;
            }
    }});

 // 消息监听器
 RongIMClient.setOnReceiveMessageListener({
    // 接收到的消息
    onReceived: function (message) {
        // 判断消息类型
        switch(message.messageType){
            case RongIMClient.MessageType.TextMessage:
                   console.log(message.content.content);
                //发送的消息内容将会被打印
                break;
            case RongIMClient.MessageType.ImageMessage:
                // do something...
                break;
            case RongIMClient.MessageType.DiscussionNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.LocationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.RichContentMessage:
                // do something...
                break;
            case RongIMClient.MessageType.DiscussionNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.InformationNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.ContactNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.ProfileNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.CommandNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.CommandMessage:
                // do something...
                break;
            case RongIMClient.MessageType.UnknownMessage:
                // do something...
                break;
            default:
                // 自定义消息
                // do something...
        }
    }
});

6.这样我们跟融云链接的差不多了。接下来我们就可以开始做发送消息。前提是你的聊天室的样式已将写好。

// 定义消息类型,文字消息使用 RongIMLib.TextMessage
 var msg = new RongIMLib.TextMessage({content:"hello",extra:"附加信息"});
 //或者使用RongIMLib.TextMessage.obtain 方法.具体使用请参见文档
 //var msg = RongIMLib.TextMessage.obtain("hello");
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊
 var targetId = "xxx"; // 目标 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                // 发送消息成功
                onSuccess: function (message) {
                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超时';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            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;
                        default :
                            info = x;
                            break;
                    }
                    console.log('发送失败:' + info);
                }
            }
        );

这里需要注意的是,你的聊天类型;是私聊,群组要定义清楚 
还有自定义消息:比如在群组聊天中,谁点了一个赞,我要在聊天室中显示:XXX点了一个赞。这时候就用到了自定义消息。

RongIMClient.registerMessageType('messageType','objectName','messageTag','message|[]')
自定义消息注册位置: RongIMClient.init("appkey") 之后的第一行位置注册即可。

7.我说一个我遇到的Bug:在前端点赞,视频的点赞数量要+1,原生规定要传一个“fav”(这个fav是自定义的),并且类型是:TextMessage。将之放到extra中,但是我一开始放不进去。后来在控制台打印,他有一个方法:setSxtra()方法。最后就把”fav”给放进去了。

 var fav=RongIMClient.TextMessage.obtain("1");
        console.log(fav);
        fav.setExtra('fav');
        console.log(fav.getExtra());
 

8.言归正传,这时候你已经把消息发送,推送给了融云,这时候再去融云消息监测方法那找你推送的消息,并且把它显示在你写好的聊天框中,就OK了。 
9.想要获取历史聊天记录怎么办?不怕,有方法:

//getHistoryMessages
 RongIMClient.getInstance().getHistoryMessages(RongIMLib.ConversationType.PRIVATE, 'targetId', null, 20, {
          onSuccess: function(list, hasMsg) {
            // hasMsg为boolean值,如果为true则表示还有剩余历史消息可拉取,为false的话表示没有剩余历史消息可供拉取。
               // list 为拉取到的历史消息列表
          },
          onError: function(error) {
              // APP未开启消息漫游或处理异常
                   // throw new ERROR ......
          }
        });
Vue.js在前端实时聊天系统中的应用 实时聊天系统已成为现代Web应用的标准功能之一,从社交网络到客户支持系统,实时通信能力显著提升了用户体验。分析Vue.js框架在构建实时聊天前端时的独特优势提供完整的实时聊天系统架构设计方案详细讲解关键技术的实现方法分享性能优化和异常处理的最佳实践本文范围涵盖从基础实现到高级优化的全过程,但不会深入讨论后端实现细节。核心架构设计WebSocket集成方案Vue.js组件化实现状态管理和数据流设计性能优化策略完整项目实现WebSocket。 阅读详情

相关推荐

从零开始:如何设计一个现代化聊天系统

该博客介绍了一个支持一对一聊天和小群聊的聊天系统架构。WebSocket 用于客户端和服务器之间的实时通信。用于实时消息传递的聊天服务器用于管理在线状态的 Presence 服务器用于发送推送通知的推送通知服务器用于保存聊天历史记录的键值存储用于提供其他功能的 API 服务器支持媒体文件扩展聊天应用程序以支持照片和视频等媒体文件。媒体文件的大小远大于文本,我们可以讨论压缩、云存储和缩略图等相关技术。端到端加密Whatsapp 支持消息的端到端加密,只有发送者和接收者可以阅读消息。

mainjay 1701

融云聊天--web SDK API

因为产品需求,需要有聊天功能,客服功能。用的是融云的,他把什么方法都集成好了,用起来很方便。并且是免费的。但是第一次接触,并不是那么顺利,并且在网上搜不到相关核心资料,只能硬着头皮看文档,实在没办法就去融云提交工单。深知做前端第一次接触融云不不易,所以我在这梳理一下融云的相关方法。方便和我一样找不着头绪的前端使用。 1.聊天室的样式(包括消息的气泡)是你自己定义的。融云不提供样式的选择。这样的好处

wanglufei_1992的博客 1万+

设计开发实时聊天系统的技术实现与最佳实践

开发实时聊天系统涉及到多个技术领域,包括前后端开发、数据库设计以及分布式系统架构等。通过合理的技术选型、良好的架构设计以及有效的性能优化,可以构建出一个高效、可靠的聊天系统。实时聊天系统的核心是通讯和存储,而扩展功能和优化能够进一步提升用户体验。在开发过程中,我们需要持续关注用户需求和系统的可扩展性,确保应用能够随着业务发展不断演进。希望这篇文章能为你在开发聊天系统时提供有用的参考。

weixin_52433269的博客 1720

web前端vue融云即时通讯上手

1、采用v2.8版本 2、可以将https://cdn.ronghub.com/RongIMLib-2.8.latest.js,下载到项目里,以import形式导入,同时需要下载npm install --save @rongcloud/engine 3、将初始化、设置监听、连接封装到一个rongyun.js文件中,作为初始化融云调用 4、在业务组件中调用rongyun.js中方法,完成融云初始化之后,可以获取会话列表|历史消息,设置RongIMClient.setOnReceiveMessageListe

heerey525 2703

MUI框架结合融云SDK构建在线聊天应用实战

融云即时通讯服务提供了一套完整的消息传递解决方案,支持文本、语音、视频、图片等多媒体消息的发送与接收。它具有高并发、低延迟的特性,确保了消息的实时传递。此外,融云还支持离线消息推送,保证用户在离线期间也不会错过任何重要信息。

weixin_42551310的博客 742

构建简易Web聊天系统:从基础到进阶

WebSocket是一种网络通信协议,它为Web应用程序提供了一种在单个TCP连接上进行全双工通信的手段。这意味着服务器和客户端可以在同一连接上发送和接收消息,而不需要关闭连接和重新建立,从而实现了真正的实时通信。WebSocket的由来是在早期Web应用中,使用HTTP协议无法很好地支持需要频繁交换数据的应用场景,例如聊天室或者实时游戏。为了解决这个问题,开发者引入了Ajax轮询或者长轮询等技术。虽然这些方法可以在一定程度上模拟出实时通信的效果,但是它们效率低下,并且对服务器资源造成不必要的浪费。

weixin_42405592的博客 922

融云 Web SDK 如何实现只有一个设备登入

融云 Web SDK 如何实现只有一个设备登入 背景 在集成融云的即时通讯时,产品脑门一拍说:咋们要实现一个功能,不管是 Web 端还是移动端登入,必须只能一个端登入成功并且后登入成功的账号需要踢掉前面登入的账号。 咋的一听感觉还蛮简单的,融云不是有一个服务嘛:叫做多设备消息同步,我把该服务关掉不就行了~~ O(∩_∩)O哈哈~ 但是… ┭┮﹏┭┮ 是我想的太简单了,服务关掉之后 Web 端的确可以进行互踢了,但是移动端和 Web 端还是可以在线呀,原来默认的情况下,融云仅支持 1 个 Web 端、1 个

rongcloud_r的博客 311

融云web端与server端demo

融云web端与server端demo,实现了web端添加好友,建立群组等一系列功能,并能与移动端聊天互动,官网介绍不全面,这是我自己精心研究出来的成果,希望这个文档可以帮助更多的人。

html聊天室API,Web SDK API 示例

Web SDK API 示例简介融云 Web SDK API 用法及常见异常总结,为了方便刚接触融云 Web SDK 开发者朋友们写下此文档,希望可以帮到你们。说明:1、函数参数中使用 [] 为可选参数(数组除外)。2、**** => **** 在本文档中表示为示例代码和结果,例:1+2 => 3。初始化获取 Token获取用户 Token 请参考 Server 开发指南用户服务。us...

weixin_33543395的博客 879

Python数据清洗实战:用RapidFuzz搞定模糊匹配(附完整代码示例)

本文详细介绍了在Python数据清洗中,如何利用RapidFuzz库高效解决字符模糊匹配难题。通过实战代码示例,演示了从处理拼写错误、格式不一致的脏数据,到构建实体对齐与记录去重的完整清洗管道,帮助开发者提升数据质量与处理效率。

pear55的博客 532

[多智能体强化学习] 王树森YouTube课程笔记

前言 近期在设计V2X资源分配任务下的状态空间和动作空间,可以说是一筹莫展,是自己菜,现在看来可能也是涉及到一些关于多智能体强化学习实现过程中过于细节的点,目前的知识储备还不够。因此打算用半周到一周的时间重电,希望之后能有进展。 本文内容来自于友人LX所推荐的油管教程,链接如下:多智能体强化学习,一共两节课40min左右。教程废话不多干货不少,老师的声音还好听,推荐直接去看原教程。 这里还要多一嘴,那就是对于强化学习来说,单主体和多主体的界限,在某种程度上来说是很模糊的,并不是场景中有多个主体需要..

观林望实的博客 3365

html5移动聊天demo,融云web点对点聊天Demo

这两天帮朋友的客户完善 IM 项目链上遗漏的 WEB 版本,所以就有了这篇文章,我把 git history 上的某节点做了删减,觉得以后可能用得到,也方便别人就给开源出来,本身没什么难度,可以当做演示或测试可行性使用。这里面用的 app_key 与 app_secret 都是测试版的,就 100 个份额,没事的话,大家不要捣乱,谢谢。源码使用clone 或下载源码包,打开后 cd 进入。npm ...

weixin_30891153的博客 479

智能网联汽车电子电气架构(下)

从资产的表现形式, 可以分为数据、 软件、 硬件、 服务等, 而从需要保护的业务过程和活动、 所关注信息的角度, 资产类型可包括基于 ECU 的控制功能、 与特定车辆相关的信息、 车辆状态信息、 用户信息、 配置信息、 特定的软件、 内容等。面向新一代 EEA 的安全需求, 基于芯片提供的 OTP, 或SHE\HSM 的安全存储能力, 实现系统关键数据(身份、 密钥等关键信息) 的安全存储, 保证系统的关键数据不被盗取、 破坏、 改写。结合攻击者的动机与识别出的系统用例, 分析对汽车电子系统可能的攻击。

m0_58838529的博客 1473

0.Android高仿网易云音乐OkHttp+Retrofit+RxJava+Glide+MVC+MVVM

这是一个使用Java(以后还会推出Kotlin版本)语言,从0开发一个Android平台,接近企业级的项目(我的云音乐),包含了基础内容,高级内容,项目封装,项目重构等知识;主要是使用系统功能,流行的...

Pich的博客 2689

ovs实现lb负载均衡

负载均衡器的实现原理是通过硬件或软件设备将客户端访问流量根据转发策略分发到多个服务器或设备上,以确保系统的负载均衡。二层负载均衡‌:使用虚拟MAC地址方式,根据OSI模型的二层进行负载均衡。‌四层负载均衡‌:基于IP+端口的负载均衡,主要分析IP层及TCP/UDP层,实现四层负载均衡。‌七层负载均衡‌:从应用层开始,根据虚拟的URL或IP、主机名接收请求,再转向相应的处理服务器。

bobi的博客 956

手把手教你用组态王KingSCADA 3.53读取S7-1200 PLC数据(保姆级图文教程)

本文提供了一份详细的组态王KingSCADA 3.53读取S7-1200 PLC数据的实战教程,涵盖从硬件连接到软件配置、变量映射到故障排查的全流程。特别针对初学者常见问题提供解决方案,帮助工程师快速实现稳定通信,提升工业自动化系统效率。

weixin_26876073的博客 680

2022年全国技能大赛云计算 RocketChat聊天系统上云

2022 年全国职业院校技能大赛高职组云计算赛项试卷

冲击 6867

zemax显微镜设计

光学显微镜(Optical Microscope,简写OM)是利用光学原理,把人眼所不能分辨的微小物体放大成像,以供人们提取微细结构信息的。我这里是插入进来之后才反转,如果之前已经在目镜的单独文件夹反转过了就不用了。将目镜的焦距设定为25mm,通过缩放,然后将镜头调转过来。镜头数据中的曲率半径、物距像距都设置为变量。将镜头的焦距整体变为16.25mm。将孔径类型设置为按照光阑尺寸浮动。打开物镜的文件,选择插入镜头。由英国物理学家虎克制作。2、像空间孔径0.25。3、像面大小-0.9。

fendoudecheng的博客 8547

融云发布语聊房SDK 1.0 & Demo 满足开发者开箱即用需求

日前,全球领先的互联网通信云厂商融云正式上线语聊房SDK 1.0 & Demo,该场景Demo是基于融云IM和RTC能力整合成的SDK 1.0而开发,开发者无需再额外调用单一能力,便可完成高质量的应用开发,不仅降低开发难度,提升开发效率,同时还帮助开发者节省了开发成本,彰显融云以IM+RTC全能力协同赋能热门应用场景的优势。 目前,开发者在融云官网可下载语聊房Demo产品进行试用,开发文档也同期上线。该Demo使用上方便快捷,只需通过手机号就可完成注册登录;而且产品界面友好,功能强大,可实现房主端

cover_se的博客 9

ADS124S08配置避坑指南:从SPI时序到寄存器设置,手把手教你调通24位ADC

本文详细解析了ADS124S08 24位ADC的SPI时序配置、寄存器设置及外围电路设计中的关键细节,帮助工程师避开常见陷阱。从SPI通信模式选择到DRDY引脚读取优化,再到基准电压启动时间调整,提供了实战验证的解决方案,确保高精度数据采集的稳定性。

weixin_29192365的博客 288

2.STM32F407ZGT6 学习笔记-移植 FreeRTOS

1. 在工程下建议FreeRTOS文件夹 2. 在FreeRTOS文件夹下建立 src 和 port 文件夹 (src用于存放freertos源码,port文件夹存放内存和接口相关的文件) 3. 复制freertos/source文件夹下所有c文件复制到刚刚建立的freertos/src目录下 4. 复制FreeRTOSv9.0.0\FreeRTOS\Source\portablex下的MemMang和RVDS文件夹复制到刚刚建立的port问价夹下 5. 将FreeRTOSv9.0.0\FreeRTOS

Car12 1234

微信支持环信_叫板融云、环信!开源版IM即时通讯

IM即时通讯,我们并不陌生,QQ、微信、飞信、yy、msn等专注于即时通讯的平台独树一帜,早已将即时通讯打造为PC时代的三大盈利模式之一。我们熟知的IM即时通讯是什么?微信=IM?现在不能这么直接的定义,早期它确实是即时通讯工具,后期版本中加入的朋友圈功能,让它承担着全民社交的角色。随之其他通信软件也相继加入了社交功能,并往自己擅长的细化市场发展,即时通讯和社交也已不可分割。从IM的功能性出发。一...

weixin_35710005的博客 508

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

基于TCP的网络聊天系统

想要自己动手实现一款专属自己的聊天室吗?那么就来看看这篇文章吧!!

一个计算机爱好者学习历程 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

FlaskWeb应用开发示例——在线聊天系统

下面是一个使用 Python + Flask + HTML + CSS + JavaScript + jQuery + Bootstrap 开发的 在线聊天系统 的完整示例。这个示例包括用户登录、实时聊天功能以及消息的展示。 2. 后端:Flask 服务器 () 3. 前端:登录页面 () 4. 前端:聊天页面 () 5. 自定义 CSS () 6. 安装依赖 () 运行以下命令安装依赖: 7. 运行项目 启动 Flask 服务器: 打开浏览器,访问 ,即可看到登录页面。 8.

Flask Web 1533

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

聊天系统服务器,聊天系统服务器

聊天系统服务器 内容精选换一换通过在一台支持远程桌面的Windows系统或者Linux操作系统服务器上,部署客户端软件和浏览器,应用发布是将服务器和应用账户纳入云堡垒机管理的功能。用户获取应用发布访问权限后,通过应用账户的密码自动代填,访问客户端应用和Web应用,并以视频方式全程记录用户运维操作,实现对远程应用账户的安全管理和用户远程访问应用的操作审计。云堡垒机支持添企业主机安全服务是一个用于保障...

weixin_39532352的博客 360
上一篇: 关于vue resource post 参数传不过去
下一篇: vue-resource promise兼容性问题
游世界
博客等级 码龄9年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值