RongCloud Web SDK with Sea.js

获取源码

seajs demo

seajs文档:https://seajs.github.io/seajs/docs/#docs


"use strict";

var t1 = new Date().getTime();

function showInfo(str){

var t = document.getElementById("show");

var dt = new Date().getTime() - t1 + " ms 后: "

t.innerHTML += dt + str + "
";

}

showInfo("开始加载");

function isSupport(APIName){

var d = document, w = window;

var id = "RongCloudCloud-API-Test" + new Date().getTime;

var iframe = d.getElementById(id);

if(!iframe){

iframe = d.createElement("iframe");

iframe.id = id;

iframe.style.display = "none";

d.body.appendChild(iframe);

}

var nativeAPI = iframe.contentWindow[APIName];

var API = w[APIName];

if(API && nativeAPI.toString() == API.toString()){

return true;

}

return false;

}

"use strict";

/*

Set configuration

https://github.com/seajs/seajs/issues/266

*/

seajs.config({

base : "./",

alias: {

protobuf: 'local-sdks/sdk/protobuf-2.3.7.min.js',

RongIMLib: 'local-sdks/sdk/RongIMLib-2.5.3.js'

}

});

var isSupportSocket = isSupport("WebSocket");

if(isSupportSocket){

seajs.use(['protobuf','RongIMLib'], function(protobuf, RongIMLib) {

showInfo("require done");

init(RongIMLib, protobuf);

});

}else{

seajs.use(['RongIMLib'], function(RongIMLib) {

showInfo("require done");

// var RongIMClient = RongIMLib.RongIMClient;

init(RongIMLib);

});

}

function init(RongIMLib, protobuf){

var appKey = "8w7jv4qb78a9y";

var token = "qyN3mb4PjM+ZXDOdW4f8KpltMLEfik9DxpqXaALr0RGROd6gPSiwQtBYfRPwWMBLjb+Q/sj37frDI5cUnfVAKg==";

var RongIMClient = RongIMLib.RongIMClient;

var RongIMClient = RongIMLib.RongIMClient;

var config = { };

if (protobuf) {

config.protobuf = protobuf;

}

//初始化

RongIMClient.init(appKey,null,{protobuf:protobuf});

var _instance = RongIMClient.getInstance();

// 连接状态监听器

RongIMClient.setConnectionStatusListener({

onChanged: function (status) {

console.info(status)

switch (status) {

case RongIMLib.ConnectionStatus.CONNECTED:

showInfo("链接成功");

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

// 判断消息类型

// showTips("新消息,类型为:" + message.messageType);

// showResult("新消息",message,start);

console.log(message);

switch(message.messageType){

case RongIMClient.MessageType.TextMessage:

/*

显示消息方法:

消息里是 原生emoji

RongIMLib.RongIMEmoji.emojiToHTML(message.content.content);

*/

break;

case RongIMClient.MessageType.VoiceMessage:

// 对声音进行预加载

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

break;

case RongIMClient.MessageType.ImageMessage:

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

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

break;

case RongIMClient.MessageType.DiscussionNotificationMessage:

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

break;

case RongIMClient.MessageType.LocationMessage:

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

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

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

break;

case RongIMClient.MessageType.RichContentMessage:

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

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

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

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...

}

}

});

//开始链接

RongIMClient.connect(token, {

onSuccess: function(userId) {

showInfo("链接成功,用户id:" + userId);

sendMessage();

getConversationList();

},

onTokenIncorrect: function() {

showInfo('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(info);

}

});

function getConversationList(){

_instance.getConversationList({

onSuccess: function(list){

showInfo(JSON.stringify(list, null, '\t'));

},

onError:function(errorCode){

showInfo(errorCode);

}

}, null, 2);

}

function sendMessage(){

var msg = new RongIMLib.TextMessage({content:"hello RongCloud!",extra:"附加信息"});

var conversationtype = RongIMLib.ConversationType.PRIVATE;

var targetId = "tester";

_instance.sendMessage(conversationtype, targetId, msg, {

onSuccess: function (message) {

console.log(message);

showInfo(JSON.stringify(message, null, '\t'));

},

onError: function (errorCode,message) {

showInfo(errorCode);

}

});

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

seajs引入html,seajs.html相关推荐

  1. seajs引入html,SeaJS:一个适用于 Web 浏览器端的模块加载器

    什么是SeaJS? SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Defini ...

  2. seajs html 缓存,Seajs禁用缓存

    使用seajs模块化,因为浏览器缓存及seasj本身的缓存,调试代码时需要不停的刷新页面,不方便调试,可按如下方法在开发阶段让 浏览器缓存及seajs缓存失效,提高开发调试的效率. 我使用的版本为 s ...

  3. 使用SeaJS实现模块化JavaScript开发

    2019独角兽企业重金招聘Python工程师标准>>> 前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加 ...

  4. 【SeaJS】【3】seajs.data相关的源码阅读

    在SeaJS官网上推荐了源码阅读顺序,本文并没有采用这个顺序,而是按个人习惯以调试官方示例的方式进行源码阅读.早期版本作者玉伯使用了几个闭包形式,本文源码版本为2.1.1,它的编码方式个人认为更加脚本 ...

  5. seaJs api 帮助文档

    前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封 ...

  6. 快速上手seajs——简单易用Seajs

    声明:本文为原创文章,如需转载,请注明来源并保留原文链接前端小尚,谢谢! 背景 一个网站必然会涉及很多功能,tab选项卡.slide轮播图.pop弹出层.美化alert.paging分页等等等等,如果 ...

  7. 使用SeaJS实现模块化JavaScript开发【转】

    前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封 ...

  8. 简单的使用Seajs

    什么是Seajs Seajs是一个加载器 http://yslove.net/seajs/ 遵循 CMD 规范模块化开发,依赖的自动加载.配置的简洁清晰. 兼容性 Chrome 3+ Firefox ...

  9. 【SeaJS】【1】初识SeaJS

    最近使用JS进行前端开发,在网上翻阅时发现SeaJS,据宣传资料它可以解决命名空间冲突,可以异步加载提高HTML的解析效率,且能遵循Keep It Simple, Stupid理念,把每个JS文件进行 ...

最新文章

  1. android面试题之一
  2. python快速编程入门黑马-500G 史上最全的JAVA全套教学视频网盘分享
  3. jquery easyUi简单介绍
  4. Power BI for Office 365(八)共享查询
  5. Component Configuration.js - 所有支持属性列表 - configuration priority
  6. linux 源码 目录,Linux系统主要目录及kernel源代码目录
  7. poj 1363 Rails 栈应用基础题
  8. Guava学习笔记(六):Immutable(不可变)集合
  9. python爬取美女图片
  10. php 获得京东的数据,利用php封装函数抓取京东商城省市县数据
  11. 广东计算机二级ps,广东省计算机等级考试二级(广东计算机二级考试真题)
  12. java 自定义泛型方法_Java中自定义泛型方法的使用
  13. Android系统中设置TextView的字符间距
  14. 饭店计算机信息管理全章ppt,酒店信息质量管理.ppt
  15. 本人已搬至博客园,感谢CSDN的一路陪伴
  16. 苹果手机软件升级密码_安卓系统用久了会卡,苹果系统就能一直流畅?
  17. 还儿童一个健康上网环境,正式开启我的路由器URL网址白名单之旅
  18. 表情分析计算机,利用深度学习和计算机视觉进行面部表情分析
  19. 帕拉迪Core4A-UTM堡垒机使用手册
  20. CorelDRAW2019版本下载,CorelDRAW最新版新增功能(全)

热门文章

  1. 深度解析香港与澳门即将打造离岸的数字金融中心
  2. 关于工作流activiti
  3. 此网站无法提供安全连接(客户端和服务器不支持一般 SSL 协议版本或加密套件。)
  4. 书单推荐|宅家不动过国庆,好书相伴不寂寞
  5. 挂载ISO镜像文件到Linux系统
  6. 【记录安装】Mac电脑,安装monkeyrunner,及其遇到的相应问题
  7. Kfir Matza:以色列的动作识别技术世界领先
  8. vue-cli(微信公众号)中网页转成canvas并保存为图进行长按分享
  9. Highcharts简介
  10. 什么是gnome---基本概念介绍(转)