一、业务场景

项目的发展需要吧原来自己的写的通讯换为第三方的,多家对比后选择了融云IM通讯,项目要实现的功能这要是单聊、群聊、聊天室、发送的内容为文字、图片、文件、语音通话与视频通话。听起来挺复杂的我们一起来实现一下,先从一个demo开始,文章会一直维护下去,知道项目本期项目开发结束。

二、进行配置

2.1,注册开发者帐号

2.2,引入sdk

三、demo代码,实现收发消息

.content_box {

width: 212px;

min-height: 50px;

border: 1px solid #ff0000;

}

发消息

$(".postMessage").click(function() {

getMessage()

})

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

var token = "WsOfFQOvy/v3nZ80UpjcOO9l67FGL9fs1E72VNcKY11y1jg3lz2Y6w8Rm/HZ6EyrhVc9pd7SHAsQspRYfSvwo21Y8SDjLVSLxh4/gZ9YyFI=";

// 连接融云服务器。

RongIMClient.connect(token, {

onSuccess: function(userId) {

console.log("Login successfully." + userId);

//userId是申请token时的填写的id,到时候可以封装在下面的extra中传过去

},

onTokenIncorrect: function() {

console.log('token无效');

},

onError: function(errorCode) {

var info = '';

switch(errorCode) {

case RongIMLib.ErrorCode.TIMEOUT:

info = '超时';

//链接超时进行重新的链接start

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,

// 重试频率 [100, 1000, 3000, 6000, 10000, 18000] 单位为毫秒,可选

url: 'cdn.ronghub.com/RongIMLib-2.2.6.min.js',

// 网络嗅探地址 [http(s)://]cdn.ronghub.com/RongIMLib-2.2.6.min.js 可选

rate: [100, 1000, 3000, 6000, 10000]

};

RongIMClient.reconnect(callback, config);

//链接超时进行重新链接end

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);

}

});

// 设置连接监听状态 ( 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.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.content.content);

$(".content_box").text(message.content.content)

break;

case RongIMClient.MessageType.VoiceMessage:

// 对声音进行预加载

// message.content.content 格式为 AMR 格式的 base64 码

console.log(message.content.content);

break;

case RongIMClient.MessageType.ImageMessage:

// message.content.content => 图片缩略图 base64。

// message.content.imageUri => 原图 URL。

console.log(message.content.content);

break;

case RongIMClient.MessageType.DiscussionNotificationMessage:

// message.content.extension => 讨论组中的人员。

console.log(message.content.content);

break;

case RongIMClient.MessageType.LocationMessage:

// message.content.latiude => 纬度。

// message.content.longitude => 经度。

// message.content.content => 位置图片 base64。

console.log(message.content.content);

break;

case RongIMClient.MessageType.RichContentMessage:

// message.content.content => 文本消息内容。

// message.content.imageUri => 图片 base64。

// message.content.url => 原图 URL。

console.log(message.content.content);

break;

case RongIMClient.MessageType.InformationNotificationMessage:

// do something...

console.log(message.content.content);

break;

case RongIMClient.MessageType.ContactNotificationMessage:

// do something...

console.log(message.content.content);

break;

case RongIMClient.MessageType.ProfileNotificationMessage:

// do something...

console.log(message.content.content);

break;

case RongIMClient.MessageType.CommandNotificationMessage:

// do something...

console.log(message.content.content);

break;

case RongIMClient.MessageType.CommandMessage:

// do something...

console.log(message.content.content);

break;

case RongIMClient.MessageType.UnknownMessage:

console.log(message.content.content);

// do something...

break;

default:

console.log(message.content.content);

// do something...

}

}

});

function getMessage() {

//生成聊天内容

$('.content_box').append();

//在页面追加你要生成的内容

// 定义消息类型,文字消息使用 RongIMLib.TextMessage

var msg = new RongIMLib.TextMessage({

content: $("#inputBox").val(),

extra: "附加要传递的值"

});

var conversationtype = RongIMLib.ConversationType.PRIVATE; // 私聊

var targetId = "3045462476240907"; // 目标 Id

RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {

// 发送消息成功

onSuccess: function(message) {

console.log(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);

}

});

}

四、发送图片、文件消息

4.1发送图片

可以通过发送文字的方法发送,图片的地址等信息写在extra里边,直接图片保存到自己的服务器。

通过融云发送图片的方法,与发送文字类似,不过有限制,100kb以下,仅支持jpg格式

4.2发送文件

文件与图片同理

五、参考链接

融云发送图片消息_基于融云的IM通讯相关推荐

  1. 融云发送图片消息_融云开发者文档

    # 概述 适用于应用内两个用户之间一对一聊天方式,两个用户间可以是好友也可以是陌生人,融云不对用户的关系进行维护管理,会话关系由融云负责建立并保持. 消息发送时序图: UserA -> Rong ...

  2. 融云发送图片消息_发送消息

    发送消息 文本消息¶ import { sendMessage, ConversationType, ObjectName } from "rongcloud-react-native-im ...

  3. 融云发送图片消息_融云IM SDK集成,Server API 发送图片消息时,缩略图生成逻辑说...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 大致压缩过程 原图宽或高只要有一边大于 240 则执行压缩处理 根据缩率图最大尺寸 240.最小尺寸 100 的要求加载图片文件(适度同比缩放原图) 将步 ...

  4. 融云发送图片消息_Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

    Web 端集成融云 SDK 如何发送正确图片消息给移动端展示? 前言 Web 端使用融云的即时通讯 SDK 在发送图片消息给移动端的时候,移动端一般会收到一个缩略图数据和展示高清图片地址,但是往往 W ...

  5. 小样本点云深度学习库_基于点云深度学习的点云数据集制作系统及方法与流程...

    本发明涉及测控技术领域,尤其涉及一种基于点云深度学习的点云数据集制作系统及方法. 背景技术: 深度学习网络模型一般都是基于64线单帧激光数据集进行.但64线激光器和单帧的限定,造成了工程应用中点云数据 ...

  6. 融云发送图片消息_IM消息ID技术专题(五):开源分布式ID生成器UidGenerator的技术实现...

    1.引言 很多人一想到IM应用开发,第一印象就是"长连接"."socket"."保活"."协议"这些关键词,没错,这些确 ...

  7. 可以发送图片文件的php聊天室,基于 Swoole 开发实时在线聊天室(十四):发送图片消息...

    基于 Swoole 开发实时在线聊天室(十四):发送图片消息 由 学院君 创建于1年前, 最后更新于 1年前 版本号 #1 2055 views 0 likes 0 collects 上篇教程我们演示 ...

  8. 微信公众号开发笔记(八)发送图片消息

    发送图片消息 上一篇我们已经上传一个图片素材,并且微信服务器也返回给我们一个media_id,接下来我们使用media_id来构造图片消息 代码实现功能 在Message.Util工具类添加代码 1. ...

  9. 04环信聊天界面 - 发送图片消息和显示图片

    1.在聊天控制器连线 /*** 点击上传图片*/ - (IBAction)showImgPickerAction:(UIButton *)sender {// 图片选择控制器UIImagePicker ...

最新文章

  1. Visual Studio 2010构建Web浏“.NET研究”览器应用程序
  2. java系统高并发解决方案
  3. docker命令行解析以及如何向服务器端发送请求(docker源码学习一)
  4. 虚拟光驱安装服务器无法运行,windows7虚拟光驱无法正常打开怎么办
  5. 你真的会用storyboard开发吗?
  6. java登录界面命令_Java命令行界面(第12部分):CLAJR
  7. python windows窗口置顶_想用Python编程却不知如何下手?一篇搞定编程准备工作
  8. 温柔又有耐心的男孩最吸引人
  9. redis设置密码(redis-cli)
  10. 彩虹云商城免授权版本6.7.5完整源码
  11. 基于Nodejs的前端灰度发布方案_20190228
  12. orm框架设计、分析与开发
  13. 脱离 Windows 完全使用 Linux你花了多少时间适应?
  14. Oracle Active database duplication
  15. 简化超长的函数指针类型
  16. 『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径
  17. ajax jsonp跨域访问,jquery ajax怎么使用jsonp跨域访问
  18. BootStrap 图标修改
  19. 多个pdf怎么合并成一个pdf?多个pdf文件怎么合并成一个文件?
  20. 翻译 | 正式发布Qt 5.11

热门文章

  1. emqx客户端用户名密码登录验证配置
  2. 关于LIS3DH和LIS3DSH的使用及误区
  3. DeepLabV1网络简析
  4. 全民参与推动科技的发展
  5. 时间长、样本小,可用性测试如何数据分析?
  6. 微信跳一跳java实现自动跳_安卓版微信跳一跳辅助(Java实现)
  7. 原来SqlSession只是个甩手掌柜?互联网行业“中年”危机
  8. [附源码]JAVA+ssm计算机毕业设计道路桥梁工程知识文库系统(程序+Lw)
  9. Codeforces Round #827 (Div. 4) 题解记录
  10. HTML5的一些新标签