var conn = new WebIM.connection({
isMultiLoginSessions: WebIM.config.isMultiLoginSessions,
https: typeof WebIM.config.https === 'boolean' ? WebIM.config.https : location.protocol === 'https:',
url: WebIM.config.xmppURL,
heartBeatWait: WebIM.config.heartBeatWait,
autoReconnectNumMax: WebIM.config.autoReconnectNumMax,
autoReconnectInterval: WebIM.config.autoReconnectInterval,
apiUrl: WebIM.config.apiURL,
isAutoLogin: true
});
conn.listen({
onOpened: function ( message ) { //连接成功回调
// 如果isAutoLogin设置为false,那么必须手动设置上线,否则无法收消息
// 手动上线指的是调用conn.setPresence(); 如果conn初始化时已将isAutoLogin设置为true
// 则无需调用conn.setPresence();
},
onClosed: function ( message ) {}, //连接关闭回调
onTextMessage: function ( message ) {}, //收到文本消息
onEmojiMessage: function ( message ) {}, //收到表情消息
onPictureMessage: function ( message ) {}, //收到图片消息
onCmdMessage: function ( message ) {}, //收到命令消息
onAudioMessage: function ( message ) {}, //收到音频消息
onLocationMessage: function ( message ) {},//收到位置消息
onFileMessage: function ( message ) {}, //收到文件消息
onVideoMessage: function (message) {
var node = document.getElementById('privateVideo');
var option = {
url: message.url,
headers: {
'Accept': 'audio/mp4'
},
onFileDownloadComplete: function (response) {
var objectURL = WebIM.utils.parseDownloadResponse.call(conn, response);
node.src = objectURL;
},
onFileDownloadError: function () {
console.log('File down load error.')
}
};
WebIM.utils.download.call(conn, option);
}, //收到视频消息
onPresence: function ( message ) {}, //处理“广播”或“发布-订阅”消息,如联系人订阅请求、处理群组、聊天室被踢解散等消息
onRoster: function ( message ) {}, //处理好友申请
onInviteMessage: function ( message ) {}, //处理群组邀请
onOnline: function () {}, //本机网络连接成功
onOffline: function () {}, //本机网络掉线
onError: function ( message ) {}, //失败回调
onBlacklistUpdate: function (list) { //黑名单变动
// 查询黑名单,将好友拉黑,将好友从黑名单移除都会回调这个函数,list则是黑名单现有的所有好友信息
console.log(list);
},
onReceivedMessage: function(message){}, //收到消息送达服务器回执
onDeliveredMessage: function(message){}, //收到消息送达客户端回执
onReadMessage: function(message){}, //收到消息已读回执
onCreateGroup: function(message){}, //创建群组成功回执(需调用createGroupNew)
onMutedMessage: function(message){} //如果用户在A群组被禁言,在A群发消息会走这个回调并且消息不会传递给群其它成员
});
根据用户名/密码/昵称注册环信 Web IM:
var options = {
username: 'username',
password: 'password',
nickname: 'nickname',
appKey: WebIM.config.appkey,
success: function () { },
error: function () { },
apiUrl: WebIM.config.apiURL
};
conn.registerUser(options);
使用用户名/密码登录环信 Web IM:
var options = {
apiUrl: WebIM.config.apiURL,
user: 'username',
pwd: 'password',
appKey: WebIM.config.appkey
};
conn.open(options);
1. 使用用户名/密码登录,获取并存储token。本例演示将Token存入cookie。
var options = {
apiUrl: WebIM.config.apiURL,
user: 'username',
pwd: 'password',
appKey: WebIM.config.appkey,
success: function (token) {
var token = token.access_token;
WebIM.utils.setCookie('webim_' + encryptUsername, token, 1);
},
error: function(){
}
};
conn.open(options);
2. 使用token登录环信 Web IM。
var options = {
apiUrl: WebIM.config.apiURL,
user: 'username',
accessToken: 'token',
appKey: WebIM.config.appkey
};
conn.open(options);
conn.close();
Q: 是否支持 token 登录,是否支持 HTTPS?
A: 支持。
Q: 是否支持重连?
A: 暂不支持,可以使用 token 来实现重连。
Q: 为什么登录后收不到消息?
A: 登录之后需要设置在线状态,才能收到消息。请检查登录成功后是否调用过 conn.setPresence();。
Q: 调试时经常报连接中断。
A: 如果使用 alter 方式调试长时间没有进行操作时,连接超时后服务器会自动断开连接。同样断点等待时间过长时服务器也会断开连接。
Q: ws有上行没有下行?
A: 可能是浏览器缓存了错误的ws返回结果,解决办法是加个时间戳参数,强制浏览器不走缓存。在websdk里面搜this.url = _getXmppUrl(options.url, this.https);改成this.url = _getXmppUrl(options.url, this.https)+'?'+new Date().getTime();
Q: 收到提示“您的连接不是私密连接”,怎么处理?
A: chrome53屏蔽了赛门铁克的某些日期颁发的证书,升级chrome就可以解决。详细信息可查看:http://www.jkeabc.com/376605.html 或者 https://sslmate.com/blog/post/ct_redaction_in_chrome_53。