seajs引入html,seajs.html
获取源码
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相关推荐
- seajs引入html,SeaJS:一个适用于 Web 浏览器端的模块加载器
什么是SeaJS? SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Defini ...
- seajs html 缓存,Seajs禁用缓存
使用seajs模块化,因为浏览器缓存及seasj本身的缓存,调试代码时需要不停的刷新页面,不方便调试,可按如下方法在开发阶段让 浏览器缓存及seajs缓存失效,提高开发调试的效率. 我使用的版本为 s ...
- 使用SeaJS实现模块化JavaScript开发
2019独角兽企业重金招聘Python工程师标准>>> 前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加 ...
- 【SeaJS】【3】seajs.data相关的源码阅读
在SeaJS官网上推荐了源码阅读顺序,本文并没有采用这个顺序,而是按个人习惯以调试官方示例的方式进行源码阅读.早期版本作者玉伯使用了几个闭包形式,本文源码版本为2.1.1,它的编码方式个人认为更加脚本 ...
- seaJs api 帮助文档
前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封 ...
- 快速上手seajs——简单易用Seajs
声明:本文为原创文章,如需转载,请注明来源并保留原文链接前端小尚,谢谢! 背景 一个网站必然会涉及很多功能,tab选项卡.slide轮播图.pop弹出层.美化alert.paging分页等等等等,如果 ...
- 使用SeaJS实现模块化JavaScript开发【转】
前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封 ...
- 简单的使用Seajs
什么是Seajs Seajs是一个加载器 http://yslove.net/seajs/ 遵循 CMD 规范模块化开发,依赖的自动加载.配置的简洁清晰. 兼容性 Chrome 3+ Firefox ...
- 【SeaJS】【1】初识SeaJS
最近使用JS进行前端开发,在网上翻阅时发现SeaJS,据宣传资料它可以解决命名空间冲突,可以异步加载提高HTML的解析效率,且能遵循Keep It Simple, Stupid理念,把每个JS文件进行 ...
最新文章
- android面试题之一
- python快速编程入门黑马-500G 史上最全的JAVA全套教学视频网盘分享
- jquery easyUi简单介绍
- Power BI for Office 365(八)共享查询
- Component Configuration.js - 所有支持属性列表 - configuration priority
- linux 源码 目录,Linux系统主要目录及kernel源代码目录
- poj 1363 Rails 栈应用基础题
- Guava学习笔记(六):Immutable(不可变)集合
- python爬取美女图片
- php 获得京东的数据,利用php封装函数抓取京东商城省市县数据
- 广东计算机二级ps,广东省计算机等级考试二级(广东计算机二级考试真题)
- java 自定义泛型方法_Java中自定义泛型方法的使用
- Android系统中设置TextView的字符间距
- 饭店计算机信息管理全章ppt,酒店信息质量管理.ppt
- 本人已搬至博客园,感谢CSDN的一路陪伴
- 苹果手机软件升级密码_安卓系统用久了会卡,苹果系统就能一直流畅?
- 还儿童一个健康上网环境,正式开启我的路由器URL网址白名单之旅
- 表情分析计算机,利用深度学习和计算机视觉进行面部表情分析
- 帕拉迪Core4A-UTM堡垒机使用手册
- CorelDRAW2019版本下载,CorelDRAW最新版新增功能(全)