差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
start:400webimintegration:websdk1.1.1 [2016/11/14 08:55] zhongzf [常见问题] |
start:400webimintegration:websdk1.1.1 [2017/01/22 08:47] liulj [运行环信 Web IM] |
||
---|---|---|---|
行 31: | 行 31: | ||
运行之前,需要调整 AppKey,打开 static/js/easemob.im.config.js,找到: | 运行之前,需要调整 AppKey,打开 static/js/easemob.im.config.js,找到: | ||
- | <code> | + | <code javascript> |
appKey : 'easemob-demo#chatdemoui' | appKey : 'easemob-demo#chatdemoui' | ||
</code> | </code> | ||
行 144: | 行 144: | ||
- | <sxh javascript> | + | <code html> |
<!--sdk相关的js--> | <!--sdk相关的js--> | ||
<script type='text/javascript' src='static/sdk/strophe.js'></script> | <script type='text/javascript' src='static/sdk/strophe.js'></script> | ||
行 151: | 行 151: | ||
<!--webim相关配置--> | <!--webim相关配置--> | ||
<script type="text/javascript" src="static/js/easemob.im.config.js"></script> | <script type="text/javascript" src="static/js/easemob.im.config.js"></script> | ||
- | </sxh> | + | </code> |
行 160: | 行 160: | ||
配置项在static/js/easemob.im.config.js文件内 | 配置项在static/js/easemob.im.config.js文件内 | ||
- | <sxh javascript> | + | <code javascript> |
xmppURL: 'im-api.easemob.com', // 环信xmppURL,1.1.0版本之前的客户需配置成:'ws://im-api.sandbox.easemob.com/ws/' 或 'wss://im-api.easemob.com/ws/' | xmppURL: 'im-api.easemob.com', // 环信xmppURL,1.1.0版本之前的客户需配置成:'ws://im-api.sandbox.easemob.com/ws/' 或 'wss://im-api.easemob.com/ws/' | ||
行 171: | 行 171: | ||
multiResources: false // 是否开启多页面同步收消息 | multiResources: false // 是否开启多页面同步收消息 | ||
- | </sxh> | + | </code> |
//注:建议xmppURL、apiURL、https三个参数统一,否则ie10以下会报**拒绝访问**的错误。// | //注:建议xmppURL、apiURL、https三个参数统一,否则ie10以下会报**拒绝访问**的错误。// | ||
行 178: | 行 178: | ||
* https: false | * https: false | ||
- | <sxh javascript> | + | <code javascript> |
xmppURL: 'im-api.easemob.com', // 环信xmppURL,1.1.0版本之前的客户需配置成:'ws://im-api.sandbox.easemob.com/ws/' | xmppURL: 'im-api.easemob.com', // 环信xmppURL,1.1.0版本之前的客户需配置成:'ws://im-api.sandbox.easemob.com/ws/' | ||
行 189: | 行 189: | ||
multiResources: false // 是否开启多页面同步收消息 | multiResources: false // 是否开启多页面同步收消息 | ||
- | </sxh> | + | </code> |
* https: true | * https: true | ||
- | <sxh javascript> | + | <code javascript> |
xmppURL: 'im-api.easemob.com', // 环信xmppURL,1.1.0版本之前的客户需配置成:'wss://im-api.sandbox.easemob.com/ws/' | xmppURL: 'im-api.easemob.com', // 环信xmppURL,1.1.0版本之前的客户需配置成:'wss://im-api.sandbox.easemob.com/ws/' | ||
行 204: | 行 204: | ||
multiResources: false // 是否开启多页面同步收消息 | multiResources: false // 是否开启多页面同步收消息 | ||
- | </sxh> | + | </code> |
行 214: | 行 214: | ||
根据用户名/密码/昵称注册环信 Web IM。新建注册页面 html 元素。 | 根据用户名/密码/昵称注册环信 Web IM。新建注册页面 html 元素。 | ||
- | <sxh html> | + | <code html> |
<div id="regist-box"> | <div id="regist-box"> | ||
user<input type="text" id="usename" /> | user<input type="text" id="usename" /> | ||
行 221: | 行 221: | ||
<input type="button" value="regist" id="regist" /> | <input type="button" value="regist" id="regist" /> | ||
</div> | </div> | ||
- | </sxh> | + | </code> |
编写注册按钮调用 js 函数。 | 编写注册按钮调用 js 函数。 | ||
- | <sxh javascript> | + | <code javascript> |
$("#regist").on('click', function() { | $("#regist").on('click', function() { | ||
var options = { | var options = { | ||
行 240: | 行 240: | ||
Easemob.im.Helper.registerUser(options); | Easemob.im.Helper.registerUser(options); | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 登录 ===== | ===== 登录 ===== | ||
行 246: | 行 246: | ||
根据用户名/密码登录环信 Web IM。新建用户名密码 html 元素。 | 根据用户名/密码登录环信 Web IM。新建用户名密码 html 元素。 | ||
- | <sxh html> | + | <code html> |
<div id="login-box"> | <div id="login-box"> | ||
user<input type="text" id="usename"/> | user<input type="text" id="usename"/> | ||
行 252: | 行 252: | ||
<input type="button" value="login" id="login" /> | <input type="button" value="login" id="login" /> | ||
</div> | </div> | ||
- | </sxh> | + | </code> |
编写登录按钮调用 js 函数。 | 编写登录按钮调用 js 函数。 | ||
- | <sxh javascript> | + | <code javascript> |
$('login').on('click', function() { | $('login').on('click', function() { | ||
//预留空现实 | //预留空现实 | ||
}) | }) | ||
- | </sxh> | + | </code> |
首先获取用户名/密码 input 框中的输入值。 | 首先获取用户名/密码 input 框中的输入值。 | ||
- | <sxh javascript> | + | <code javascript> |
var username = $("#usename").val(); | var username = $("#usename").val(); | ||
var pass = $("#password").val(); | var pass = $("#password").val(); | ||
- | </sxh> | + | </code> |
创建一个新的连接。 | 创建一个新的连接。 | ||
- | <sxh javascript> | + | <code javascript> |
var conn = new Easemob.im.Connection(); | var conn = new Easemob.im.Connection(); | ||
- | </sxh> | + | </code> |
初始化连接。 | 初始化连接。 | ||
- | <sxh javascript> | + | <code javascript> |
conn.init({ | conn.init({ | ||
//预留空现实 | //预留空现实 | ||
}); | }); | ||
- | </sxh> | + | </code> |
在 init 方法中添加 onOpened 回调函数,处理登录信息。 | 在 init 方法中添加 onOpened 回调函数,处理登录信息。 | ||
- | <sxh javascript> | + | <code javascript> |
//当连接成功时的回调方法 | //当连接成功时的回调方法 | ||
onOpened : function() { | onOpened : function() { | ||
行 291: | 行 291: | ||
conn.setPresence(); | conn.setPresence(); | ||
} | } | ||
- | </sxh> | + | </code> |
登录完整 JS 调用代码如下。 | 登录完整 JS 调用代码如下。 | ||
- | <sxh javascript> | + | <code javascript> |
$(function() { | $(function() { | ||
var conn = null; | var conn = null; | ||
行 315: | 行 315: | ||
}); | }); | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 消息 ===== | ===== 消息 ===== | ||
行 323: | 行 323: | ||
创建消息 div。 | 创建消息 div。 | ||
- | <sxh html> | + | <code html> |
<div id="content"> | <div id="content"> | ||
消息内容<textarea id="text"></textarea> | 消息内容<textarea id="text"></textarea> | ||
行 329: | 行 329: | ||
<button id="send">发送</button> | <button id="send">发送</button> | ||
</div> | </div> | ||
- | </sxh> | + | </code> |
编写发送文本消息 js 函数。 | 编写发送文本消息 js 函数。 | ||
- | <sxh javascript> | + | <code javascript> |
$("#send").on('click',function(){ | $("#send").on('click',function(){ | ||
sendText(); | sendText(); | ||
行 348: | 行 348: | ||
conn.sendTextMessage(options); | conn.sendTextMessage(options); | ||
}; | }; | ||
- | </sxh> | + | </code> |
登录成功后发送文本消息完整 JS 调用代码如下。 | 登录成功后发送文本消息完整 JS 调用代码如下。 | ||
- | <sxh javascript> | + | <code javascript> |
$(function(){ | $(function(){ | ||
var conn = null; | var conn = null; | ||
行 389: | 行 389: | ||
}; | }; | ||
}); | }); | ||
- | </sxh> | + | </code> |
==== 处理文本消息 ==== | ==== 处理文本消息 ==== | ||
行 395: | 行 395: | ||
登录成功后收到文本消息的处理方法需要在 con.init 方法中调用 onTextMessage 回调函数。 | 登录成功后收到文本消息的处理方法需要在 con.init 方法中调用 onTextMessage 回调函数。 | ||
- | <sxh javascript> | + | <code javascript> |
conn.init({ | conn.init({ | ||
//收到文本消息时的回调方法 | //收到文本消息时的回调方法 | ||
行 411: | 行 411: | ||
} | } | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 好友 ===== | ===== 好友 ===== | ||
行 419: | 行 419: | ||
在 onOpened : function(){}; 中添加 getRoster 回调方法,添加获取当前登录人好友列表。 | 在 onOpened : function(){}; 中添加 getRoster 回调方法,添加获取当前登录人好友列表。 | ||
- | <sxh javascript> | + | <code javascript> |
conn.init({ | conn.init({ | ||
onOpened : function(){ | onOpened : function(){ | ||
行 435: | 行 435: | ||
} | } | ||
}); | }); | ||
- | </sxh> | + | </code> |
将数组中的好友名称放入对应的 html 相应元素显示即可。 | 将数组中的好友名称放入对应的 html 相应元素显示即可。 | ||
行 445: | 行 445: | ||
添加发起方,获取要添加好友名称,例如 addfridentId 为要添加的好友的 id。 | 添加发起方,获取要添加好友名称,例如 addfridentId 为要添加的好友的 id。 | ||
- | <sxh javascript> | + | <code javascript> |
//addfridentId为页面上要添加好友的输入框html元素id值。 | //addfridentId为页面上要添加好友的输入框html元素id值。 | ||
var user = $('#addfridentId').val(); | var user = $('#addfridentId').val(); | ||
- | </sxh> | + | </code> |
添加好友按钮点击时调用 startAddFriend 函数。 | 添加好友按钮点击时调用 startAddFriend 函数。 | ||
- | <sxh javascript> | + | <code javascript> |
var startAddFriend = function() { | var startAddFriend = function() { | ||
var user = $('#addfridentId').val(); | var user = $('#addfridentId').val(); | ||
行 461: | 行 461: | ||
}); | }); | ||
} | } | ||
- | </sxh> | + | </code> |
=== 邀请接受方 === | === 邀请接受方 === | ||
行 467: | 行 467: | ||
被添加方,在 con.init 方法中调用 handlePresence 回调方法。 | 被添加方,在 con.init 方法中调用 handlePresence 回调方法。 | ||
- | <sxh javascript> | + | <code javascript> |
conn.init({ | conn.init({ | ||
//收到联系人订阅请求的回调方法 | //收到联系人订阅请求的回调方法 | ||
行 493: | 行 493: | ||
} | } | ||
}; | }; | ||
- | </sxh> | + | </code> |
==== 删除好友 ==== | ==== 删除好友 ==== | ||
行 499: | 行 499: | ||
删除好友,首先获取好友名称,调用 removeRoster 方法。例如删除按钮触发时调用 delFriend 函数。 | 删除好友,首先获取好友名称,调用 removeRoster 方法。例如删除按钮触发时调用 delFriend 函数。 | ||
- | <sxh javascript> | + | <code javascript> |
var delFriend = function() { | var delFriend = function() { | ||
var user = $('#delfridentId').val();//获取要删除好友的名称 | var user = $('#delfridentId').val();//获取要删除好友的名称 | ||
行 514: | 行 514: | ||
}); | }); | ||
} | } | ||
- | </sxh> | + | </code> |
===== 关闭连接 ===== | ===== 关闭连接 ===== | ||
行 520: | 行 520: | ||
当用户退出登录时需要调用 con.onClosed 回调函数。 | 当用户退出登录时需要调用 con.onClosed 回调函数。 | ||
- | <sxh javascript> | + | <code javascript> |
conn.init({ | conn.init({ | ||
//当连接关闭时的回调方法 | //当连接关闭时的回调方法 | ||
行 528: | 行 528: | ||
} | } | ||
}); | }); | ||
- | </sxh> | + | </code> |
====== 初始化 ====== | ====== 初始化 ====== | ||
行 536: | 行 536: | ||
===== 创建连接 ===== | ===== 创建连接 ===== | ||
- | <sxh javascript> | + | <code javascript> |
var conn = new Easemob.im.Connection(); | var conn = new Easemob.im.Connection(); | ||
- | </sxh> | + | </code> |
===== 初始化连接 ===== | ===== 初始化连接 ===== | ||
- | <sxh javascript> | + | <code javascript> |
conn.init({ | conn.init({ | ||
https : true,//非必填,url值未设置时有效,优先采用url配置的参数。默认采用http连接,地址为‘http://im-api.easemob.com/http-bind/’,启用https时传递此值,地址为:‘https://im-api.easemob.com/http-bind/’ | https : true,//非必填,url值未设置时有效,优先采用url配置的参数。默认采用http连接,地址为‘http://im-api.easemob.com/http-bind/’,启用https时传递此值,地址为:‘https://im-api.easemob.com/http-bind/’ | ||
行 651: | 行 651: | ||
} | } | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 打开连接 ===== | ===== 打开连接 ===== | ||
行 657: | 行 657: | ||
支持 username/password 和 username/token 登录两种方式,SDK 中会根据传入的参数进行自动选择是否登录 usergrid,获取登录成功的 token 后再进行登录聊天,如果使用 token 的打开连接将跳过登录 usergird,直接登录 IM 服务器。 | 支持 username/password 和 username/token 登录两种方式,SDK 中会根据传入的参数进行自动选择是否登录 usergrid,获取登录成功的 token 后再进行登录聊天,如果使用 token 的打开连接将跳过登录 usergird,直接登录 IM 服务器。 | ||
- | <sxh javascript> | + | <code javascript> |
//用户名 | //用户名 | ||
var user = $("#username").val(); | var user = $("#username").val(); | ||
行 672: | 行 672: | ||
//accessToken : 'YWMt8bfZfFk5EeSiAzsQ0OXu4QAAAUpoZFOMJ66ic5m2LOZRhYUsRKZWINA06HI' | //accessToken : 'YWMt8bfZfFk5EeSiAzsQ0OXu4QAAAUpoZFOMJ66ic5m2LOZRhYUsRKZWINA06HI' | ||
}); | }); | ||
- | </sxh> | + | </code> |
====== 单聊 ====== | ====== 单聊 ====== | ||
行 684: | 行 684: | ||
查询好友列表时,要注意 subscription(both、to、from)为不同值的处理,此处默认 both 和 to 的为好友,开发者自定义处理,保持跟 APP 端处理一致即可。 | 查询好友列表时,要注意 subscription(both、to、from)为不同值的处理,此处默认 both 和 to 的为好友,开发者自定义处理,保持跟 APP 端处理一致即可。 | ||
- | <sxh javascript> | + | <code javascript> |
conn.getRoster({ | conn.getRoster({ | ||
success : function(roster) { | success : function(roster) { | ||
行 717: | 行 717: | ||
}, | }, | ||
}); | }); | ||
- | </sxh> | + | </code> |
==== 添加好友 ==== | ==== 添加好友 ==== | ||
行 723: | 行 723: | ||
通过 SDK 的 subscribe 和 unsubscribe 进行添加或者删除好友操作,登录用户通过注册 onPresence,监听对方的添加或者删除好友请求,并做相应的处理。 | 通过 SDK 的 subscribe 和 unsubscribe 进行添加或者删除好友操作,登录用户通过注册 onPresence,监听对方的添加或者删除好友请求,并做相应的处理。 | ||
- | <sxh javascript> | + | <code javascript> |
//easemobwebim-sdk中收到联系人订阅请求的处理方法,具体的type值所对应的值请参考xmpp协议规范 | //easemobwebim-sdk中收到联系人订阅请求的处理方法,具体的type值所对应的值请参考xmpp协议规范 | ||
var handlePresence = function (e){ | var handlePresence = function (e){ | ||
行 744: | 行 744: | ||
} | } | ||
}; | }; | ||
- | </sxh> | + | </code> |
==== 申请添加对方为好友 ==== | ==== 申请添加对方为好友 ==== | ||
- | <sxh javascript> | + | <code javascript> |
//主动申请添加对方为好友 | //主动申请添加对方为好友 | ||
var startAddFriend = function startAddFriend(){ | var startAddFriend = function startAddFriend(){ | ||
行 766: | 行 766: | ||
return time; | return time; | ||
} | } | ||
- | </sxh> | + | </code> |
==== 对方收到请求,同意或者拒绝 ==== | ==== 对方收到请求,同意或者拒绝 ==== | ||
- | <sxh javascript> | + | <code javascript> |
//对方收到请求加为好友,接受请求 | //对方收到请求加为好友,接受请求 | ||
$('#confirm-block-footer-confirmButton').click(function() { | $('#confirm-block-footer-confirmButton').click(function() { | ||
行 800: | 行 800: | ||
}); | }); | ||
}; | }; | ||
- | </sxh> | + | </code> |
对于好友的分组,添加好友时在 addroster 可以指定 group 属性(默认为:default 组),添加好友成功后,好友列表渲染时,根据好友的 group 属性进行分组渲染,实现类似其他聊天工具的自定义好友分组管理的功能。 | 对于好友的分组,添加好友时在 addroster 可以指定 group 属性(默认为:default 组),添加好友成功后,好友列表渲染时,根据好友的 group 属性进行分组渲染,实现类似其他聊天工具的自定义好友分组管理的功能。 | ||
行 808: | 行 808: | ||
取消订阅,同时将对方从自己的好友列表上删除掉。 | 取消订阅,同时将对方从自己的好友列表上删除掉。 | ||
- | <sxh javascript> | + | <code javascript> |
var delFriend = function(user) { | var delFriend = function(user) { | ||
conn.removeRoster({ | conn.removeRoster({ | ||
行 820: | 行 820: | ||
}); | }); | ||
}; | }; | ||
- | </sxh> | + | </code> |
===== 消息 ===== | ===== 消息 ===== | ||
行 826: | 行 826: | ||
==== 发送文本(表情)聊天消息 ==== | ==== 发送文本(表情)聊天消息 ==== | ||
- | <sxh javascript> | + | <code javascript> |
//发送文本消息 | //发送文本消息 | ||
conn.sendTextMessage({ | conn.sendTextMessage({ | ||
行 840: | 行 840: | ||
//ext:{"extmsg":"extends messages"}//用户自扩展的消息内容(群聊用法相同) | //ext:{"extmsg":"extends messages"}//用户自扩展的消息内容(群聊用法相同) | ||
}); | }); | ||
- | </sxh> | + | </code> |
==== 发送命令消息 ==== | ==== 发送命令消息 ==== | ||
- | <sxh javascript> | + | <code javascript> |
//发送cmd消息 | //发送cmd消息 | ||
conn.sendCmdMessage({ | conn.sendCmdMessage({ | ||
行 853: | 行 853: | ||
//ext :{"extmsg":"extends messages"}//用户自扩展的消息内容(群聊用法相同) | //ext :{"extmsg":"extends messages"}//用户自扩展的消息内容(群聊用法相同) | ||
}); | }); | ||
- | </sxh> | + | </code> |
==== 发送图片消息 ==== | ==== 发送图片消息 ==== | ||
行 861: | 行 861: | ||
- 发送图片消息,消息体包含图片的基本信息、服务器路径、secret 等,接收方初始化连接中的 onPictureMessage 的格式,根据图片消息内容到服务器下载图片,并进行显示。 | - 发送图片消息,消息体包含图片的基本信息、服务器路径、secret 等,接收方初始化连接中的 onPictureMessage 的格式,根据图片消息内容到服务器下载图片,并进行显示。 | ||
- | <sxh javascript> | + | <code javascript> |
function sendPic() { | function sendPic() { | ||
//图片接收者,如“test1” | //图片接收者,如“test1” | ||
行 899: | 行 899: | ||
alert("不支持此图片类型" + filetype); | alert("不支持此图片类型" + filetype); | ||
}; | }; | ||
- | </sxh> | + | </code> |
==== 发送音频消息 ==== | ==== 发送音频消息 ==== | ||
行 908: | 行 908: | ||
- 发送音频消息给接收方,消息体包含音频的基本信息、下载路径和 secret 信息等,接收方收到消息后,根据消息体内部的音频下载路径和 secret 路径,下载音频并进行显示。 | - 发送音频消息给接收方,消息体包含音频的基本信息、下载路径和 secret 信息等,接收方收到消息后,根据消息体内部的音频下载路径和 secret 路径,下载音频并进行显示。 | ||
- | <sxh javascript> | + | <code javascript> |
function sendAudio () { | function sendAudio () { | ||
var to = curChatUserId; | var to = curChatUserId; | ||
行 945: | 行 945: | ||
alert("不支持此音频类型" + filetype); | alert("不支持此音频类型" + filetype); | ||
}; | }; | ||
- | </sxh> | + | </code> |
==== 接收消息 ==== | ==== 接收消息 ==== | ||
行 951: | 行 951: | ||
注册接收消息。 | 注册接收消息。 | ||
- | <sxh javascript> | + | <code javascript> |
conn.init({ | conn.init({ | ||
onTextMessage : function(message) { },//收到文本消息处理动作 | onTextMessage : function(message) { },//收到文本消息处理动作 | ||
行 959: | 行 959: | ||
... | ... | ||
}); | }); | ||
- | </sxh> | + | </code> |
==== 处理消息 ==== | ==== 处理消息 ==== | ||
行 967: | 行 967: | ||
注:对于图片、语音消息需要先进行下载,然后进行显示或者播放处理。如下(下载图片,音频同): | 注:对于图片、语音消息需要先进行下载,然后进行显示或者播放处理。如下(下载图片,音频同): | ||
- | <sxh javascript> | + | <code javascript> |
var handlePictureMessage = function(message) { | var handlePictureMessage = function(message) { | ||
var filename = message.filename;//文件名称,带文件扩展名 | var filename = message.filename;//文件名称,带文件扩展名 | ||
行 1008: | 行 1008: | ||
}; | }; | ||
Easemob.im.Helper.download(options); | Easemob.im.Helper.download(options); | ||
- | </sxh> | + | </code> |
==== 历史消息 ==== | ==== 历史消息 ==== | ||
行 1025: | 行 1025: | ||
===== 查询群组成员 ===== | ===== 查询群组成员 ===== | ||
- | <sxh javascript> | + | <code javascript> |
//根据roomId查询room成员列表 | //根据roomId查询room成员列表 | ||
var queryOccupants = function queryOccupants(roomId) { | var queryOccupants = function queryOccupants(roomId) { | ||
行 1052: | 行 1052: | ||
}); | }); | ||
}; | }; | ||
- | </sxh> | + | </code> |
===== 发送文本(表情)聊天消息 ===== | ===== 发送文本(表情)聊天消息 ===== | ||
- | <sxh javascript> | + | <code javascript> |
//发送文本消息 | //发送文本消息 | ||
conn.sendTextMessage({ | conn.sendTextMessage({ | ||
行 1071: | 行 1071: | ||
msg :'hello world![(*)][(#)]' //文本消息+表情 | msg :'hello world![(*)][(#)]' //文本消息+表情 | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 发送图片消息 ===== | ===== 发送图片消息 ===== | ||
行 1080: | 行 1080: | ||
- 发送图片消息初始化连接中的 onPictureMessage 的格式 | - 发送图片消息初始化连接中的 onPictureMessage 的格式 | ||
- | <sxh javascript> | + | <code javascript> |
//发送图片消息时调用方法 | //发送图片消息时调用方法 | ||
var sendPic = function() { | var sendPic = function() { | ||
行 1131: | 行 1131: | ||
alert("不支持此图片类型" + filetype); | alert("不支持此图片类型" + filetype); | ||
}; | }; | ||
- | </sxh> | + | </code> |
===== 发送音频消息 ===== | ===== 发送音频消息 ===== | ||
行 1140: | 行 1140: | ||
- 发送消息 | - 发送消息 | ||
- | <sxh javascript> | + | <code javascript> |
//发送音频消息时调用的方法 | //发送音频消息时调用的方法 | ||
var sendAudio = function() { | var sendAudio = function() { | ||
行 1180: | 行 1180: | ||
alert("不支持此音频类型" + filetype); | alert("不支持此音频类型" + filetype); | ||
}; | }; | ||
- | </sxh> | + | </code> |
===== 接收及处理消息 ===== | ===== 接收及处理消息 ===== | ||
行 1190: | 行 1190: | ||
===== 加入聊天室 ===== | ===== 加入聊天室 ===== | ||
- | <sxh javascript> | + | <code javascript> |
conn.joinChatRoom({ | conn.joinChatRoom({ | ||
roomId: "roomId"//聊天室Id | roomId: "roomId"//聊天室Id | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 退出聊天室 ===== | ===== 退出聊天室 ===== | ||
- | <sxh javascript> | + | <code javascript> |
conn.quitChatRoom({ | conn.quitChatRoom({ | ||
roomId: "roomId"//聊天室Id | roomId: "roomId"//聊天室Id | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 发送消息到聊天室 ===== | ===== 发送消息到聊天室 ===== | ||
- | <sxh javascript> | + | <code javascript> |
conn.sendTextMessage({ | conn.sendTextMessage({ | ||
to: "to",//目标user | to: "to",//目标user | ||
行 1213: | 行 1213: | ||
roomType: "chatroom"//必填字段,无需修改 | roomType: "chatroom"//必填字段,无需修改 | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 聊天室相关回调 ===== | ===== 聊天室相关回调 ===== | ||
行 1221: | 行 1221: | ||
==== 加入成功 ==== | ==== 加入成功 ==== | ||
- | <sxh javascript> | + | <code javascript> |
if ( e.type == 'joinChatRoomSuccess' ) {\\ | if ( e.type == 'joinChatRoomSuccess' ) {\\ | ||
} | } | ||
- | </sxh> | + | </code> |
==== 加入失败 ==== | ==== 加入失败 ==== | ||
- | <sxh javascript> | + | <code javascript> |
if ( e.type == 'joinChatRoomFailed' ) {\\ | if ( e.type == 'joinChatRoomFailed' ) {\\ | ||
} | } | ||
- | </sxh> | + | </code> |
==== 聊天室被删除 ==== | ==== 聊天室被删除 ==== | ||
- | <sxh javascript> | + | <code javascript> |
if ( e.type == 'deleteGroupChat' ) {\\ | if ( e.type == 'deleteGroupChat' ) {\\ | ||
} | } | ||
- | </sxh> | + | </code> |
===== 导入第三方表情包 ===== | ===== 导入第三方表情包 ===== | ||
- | <sxh javascript> | + | <code javascript> |
Easemob.im.EMOTIONS = { | Easemob.im.EMOTIONS = { | ||
path: 'static/img/faces/' | path: 'static/img/faces/' | ||
行 1253: | 行 1253: | ||
} | } | ||
} | } | ||
- | </sxh> | + | </code> |
====== 退出 ====== | ====== 退出 ====== | ||
行 1261: | 行 1261: | ||
关闭连接。 | 关闭连接。 | ||
- | <sxh javascript> | + | <code javascript> |
//SDK关闭连接并处理连接状态为CLOSED | //SDK关闭连接并处理连接状态为CLOSED | ||
conn.close(); | conn.close(); | ||
- | </sxh> | + | </code> |
====== 工具类说明 ====== | ====== 工具类说明 ====== | ||
行 1272: | 行 1272: | ||
===== 表情工具类 ===== | ===== 表情工具类 ===== | ||
- | <sxh javascript> | + | <code javascript> |
//返回表情JSON object,格式为: | //返回表情JSON object,格式为: | ||
{ | { | ||
行 1286: | 行 1286: | ||
var base64str = base64.encode(srcstr); | var base64str = base64.encode(srcstr); | ||
var orgstr = base64.decode(srcstr); | var orgstr = base64.decode(srcstr); | ||
- | </sxh> | + | </code> |
===== 文件上传工具类 ===== | ===== 文件上传工具类 ===== | ||
- | <sxh javascript> | + | <code javascript> |
//是否能上传file | //是否能上传file | ||
var canupload = Easemob.im.Helper.isCanUploadFile; | var canupload = Easemob.im.Helper.isCanUploadFile; | ||
行 1299: | 行 1299: | ||
//是否设置mimetype | //是否设置mimetype | ||
var hasmimetype = Easemob.im.Helper.hasOverrideMimeType; | var hasmimetype = Easemob.im.Helper.hasOverrideMimeType; | ||
- | </sxh> | + | </code> |
===== 表情解析工具类 ===== | ===== 表情解析工具类 ===== | ||
- | <sxh javascript> | + | <code javascript> |
//返回表情JSON,格式为: | //返回表情JSON,格式为: | ||
{ | { | ||
行 1318: | 行 1318: | ||
var emotionMsg = Easemob.im.Helper.parseTextMessage(message); | var emotionMsg = Easemob.im.Helper.parseTextMessage(message); | ||
- | </sxh> | + | </code> |
===== 文件上传工具类 ===== | ===== 文件上传工具类 ===== | ||
- | <sxh javascript> | + | <code javascript> |
//返回fileinfo对象,格式为: | //返回fileinfo对象,格式为: | ||
{ | { | ||
行 1358: | 行 1358: | ||
}; | }; | ||
var fileSize = getFileSize(options.fileInputId);; | var fileSize = getFileSize(options.fileInputId);; | ||
- | </sxh> | + | </code> |
===== 发送 Ajax 请求 ===== | ===== 发送 Ajax 请求 ===== | ||
- | <sxh javascript> | + | <code javascript> |
var options = { | var options = { | ||
dataType:'text',//default | dataType:'text',//default | ||
行 1373: | 行 1373: | ||
}; | }; | ||
Easemob.im.Helper.xhr(options); | Easemob.im.Helper.xhr(options); | ||
- | </sxh> | + | </code> |
===== 登录 ===== | ===== 登录 ===== | ||
- | <sxh javascript> | + | <code javascript> |
var options = { | var options = { | ||
appKey:'easemob-demo#chatdemoui',//default '' | appKey:'easemob-demo#chatdemoui',//default '' | ||
行 1386: | 行 1386: | ||
}; | }; | ||
Easemob.im.Helper.login2UserGrid(options); | Easemob.im.Helper.login2UserGrid(options); | ||
- | </sxh> | + | </code> |
===== 注册 ===== | ===== 注册 ===== | ||
- | <sxh javascript> | + | <code javascript> |
var options = { | var options = { | ||
username : 'zjj8', | username : 'zjj8', | ||
行 1403: | 行 1403: | ||
}; | }; | ||
Easemob.im.Helper.registerUser(options); | Easemob.im.Helper.registerUser(options); | ||
- | </sxh> | + | </code> |
===== 内置空函数 ===== | ===== 内置空函数 ===== | ||
行 1409: | 行 1409: | ||
当所有需要回调的地方接收到函数时,默认采用此函数。 | 当所有需要回调的地方接收到函数时,默认采用此函数。 | ||
- | <sxh javascript> | + | <code javascript> |
var emptyFn = function() {}; | var emptyFn = function() {}; | ||
- | </sxh> | + | </code> |
====== 常见问题 ====== | ====== 常见问题 ====== |