差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:web:intro:basic [2020/07/02 03:14]
zhangdong [创建连接]
im:web:intro:basic [2022/08/03 10:19] (当前版本)
jennifer.zeng
行 4: 行 4:
  
 <code javascript>​ <code javascript>​
-var conn = {};+let conn = {};
 WebIM.config = config; WebIM.config = config;
-conn = WebIM.conn = new WebIM.default.connection({+conn = WebIM.conn = new WebIM.connection({
     appKey: WebIM.config.appkey,​     appKey: WebIM.config.appkey,​
     isHttpDNS: WebIM.config.isHttpDNS,​     isHttpDNS: WebIM.config.isHttpDNS,​
行 14: 行 14:
     apiUrl: WebIM.config.restServer,​     apiUrl: WebIM.config.restServer,​
     isAutoLogin:​ WebIM.config.isAutoLogin,​     isAutoLogin:​ WebIM.config.isAutoLogin,​
-    heartBeatWait:​ WebIM.config.heartBeatWait,​ 
     autoReconnectNumMax:​ WebIM.config.autoReconnectNumMax,​     autoReconnectNumMax:​ WebIM.config.autoReconnectNumMax,​
     autoReconnectInterval:​ WebIM.config.autoReconnectInterval,​     autoReconnectInterval:​ WebIM.config.autoReconnectInterval,​
行 27: 行 26:
 <code javascript>​ <code javascript>​
 conn.listen({ conn.listen({
-    onOpened: function ( message ​) {},         ​//​连接成功回调  +    onOpened: function () {},                  //​连接成功回调  
-    onClosed: function ( message ​) {},         ​//​连接关闭回调+    onClosed: function () {},                  //​连接关闭回调
     onTextMessage:​ function ( message ) {},    //​收到文本消息     onTextMessage:​ function ( message ) {},    //​收到文本消息
     onEmojiMessage:​ function ( message ) {},   //​收到表情消息     onEmojiMessage:​ function ( message ) {},   //​收到表情消息
行 36: 行 35:
     onLocationMessage:​ function ( message ) {},//​收到位置消息     onLocationMessage:​ function ( message ) {},//​收到位置消息
     onFileMessage:​ function ( message ) {},    //​收到文件消息     onFileMessage:​ function ( message ) {},    //​收到文件消息
 +    onCustomMessage:​ function ( message ) {},  //​收到自定义消息
     onVideoMessage:​ function (message) {     onVideoMessage:​ function (message) {
         var node = document.getElementById('​privateVideo'​);​         var node = document.getElementById('​privateVideo'​);​
行 68: 行 68:
     onReadMessage:​ function(message){}, ​       //​收到消息已读回执     onReadMessage:​ function(message){}, ​       //​收到消息已读回执
     onCreateGroup:​ function(message){}, ​       //​创建群组成功回执(需调用createGroupNew)     onCreateGroup:​ function(message){}, ​       //​创建群组成功回执(需调用createGroupNew)
-    onMutedMessage:​ function(message){} ​       //​如果用户在A群组被禁言,在A群发消息会走这个回调并且消息不会传递给群其它成员+    onMutedMessage:​ function(message){},       //​如果用户在A群组被禁言,在A群发消息会走这个回调并且消息不会传递给群其它成员 
 +    onChannelMessage:​ function(message){} ​     //​收到整个会话已读的回执,在对方发送channel ack时会在这个回调里收到消息
 }); });
 </​code>​ </​code>​
行 82: 行 83:
     appKey: WebIM.config.appkey,​     appKey: WebIM.config.appkey,​
     success: function () { },  ​     success: function () { },  ​
-    error: function () { } +    error: function (err) { 
-    ​apiUrl:​ WebIM.config.apiURL+        let errorData = JSON.parse(err.data);​ 
 +        if (errorData.error === '​duplicate_unique_property_exists'​) { 
 +            console.log('​用户已存在!'​);​ 
 +        ​else if (errorData.error === '​illegal_argument'​) { 
 +            if (errorData.error_description === '​USERNAME_TOO_LONG'​) { 
 +                console.log('​用户名超过64个字节!'​) 
 +            }else{ 
 +                console.log('​用户名不合法!'​) 
 +            } 
 +        } else if (errorData.error === '​unauthorized'​) { 
 +            console.log('​注册失败,无权限!'​) 
 +        } else if (errorData.error === '​resource_limited'​) { 
 +            console.log('​您的App用户注册数量已达上限,​请升级至企业版!'​) 
 +        } 
 +    }, 
   };    }; 
   conn.registerUser(options);​   conn.registerUser(options);​
行 95: 行 110:
 <code javascript>​ <code javascript>​
 var options = {  var options = { 
-  apiUrl: WebIM.config.apiURL,​ 
   user: '​username',​   user: '​username',​
   pwd: '​password',​   pwd: '​password',​
行 105: 行 119:
 === 使用 Token 登录 === === 使用 Token 登录 ===
  
-1. 使用用户名/​密码登录,获取Token。+1. 使用用户名/​密码登录,获取 Token。
  
 <code javascript>​ <code javascript>​
 var options = { var options = {
-    apiUrl: WebIM.config.apiURL,​ 
     user: '​username',​     user: '​username',​
     pwd: '​password',​     pwd: '​password',​
行 126: 行 139:
 <code javascript>​ <code javascript>​
 var options = { var options = {
-    apiUrl: WebIM.config.apiURL,​ 
     user: '​username',​     user: '​username',​
     accessToken:​ '​token',​     accessToken:​ '​token',​
行 139: 行 151:
 </​code>​ </​code>​
  
 +
 +===== 上传推送 token =====
 +如果把 SDK 用在原生客户端,集成第三方推送功能,可以调用此方法将 token 上传到环信服务器
 +<code javascript>​
 +/**
 + * @param {Object} options - 
 + * @param {Object} options.deviceId - 设备 ID,可以自己定义,一般用来标识同一个设备
 + * @param {Object} options.deviceToken - 推送 token
 + * @param {Object} options.notifierName - 推送服务的 appId,对于 FCM 是 senderId,对于 VIVO 是 “appId+#​+AppKey ”
 + */
 +conn.uploadToken(options);​
 +</​code>​
 +
 +===== 修改推送昵称 =====
 +在注册时可以设置一个昵称,这个昵称用来在推送消息时显示,可以调用下面API修改昵称
 +<code javascript>​
 +conn.updateCurrentUserNick('​newNick'​)
 +</​code>​
 ===== 常见问题 ===== ===== 常见问题 =====
  
行 145: 行 175:
  
 Q: 是否支持重连?\\ ​ Q: 是否支持重连?\\ ​
-A: 支持。1.未使用DNS:当前连接不能建立时会尝试重新连接,连接次数可在config里配置;2.使用DNS:当前连接不能建立时,会根据DNSconfig的地址逐一尝试连接。+A: 支持。1.未使用 DNS:当前连接不能建立时会尝试重新连接,连接次数可在 config 里配置;2.使用 DNS:当前连接不能建立时,会根据 DNSconfig 的地址逐一尝试连接。
  
-Q: ws有上行没有下行? \\ +Q: ws 有上行没有下行? \\ 
-A: 可能是浏览器缓存了错误的ws返回结果,解决办法是加个时间戳参数,强制浏览器不走缓存。+A: 可能是浏览器缓存了错误的 ws 返回结果,解决办法是加个时间戳参数,强制浏览器不走缓存。
  
-Q: 收到提示“您的连接不是私密连接”,怎么处理?\\+Q: 收到提示 “您的连接不是私密连接”,怎么处理?\\
 {{:​start:​400webimintegration:​adf9103523f68fd739b92c9a7143f239.jpg?​nolink|}}\\ {{:​start:​400webimintegration:​adf9103523f68fd739b92c9a7143f239.jpg?​nolink|}}\\
-A: chrome53屏蔽了赛门铁克的某些日期颁发的证书,升级chrome就可以解决。详细信息可查看:http://​www.jkeabc.com/​376605.html 或者 https://​sslmate.com/​blog/​post/​ct_redaction_in_chrome_53。+A: chrome53 屏蔽了赛门铁克的某些日期颁发的证书,升级 chrome 就可以解决。详细信息可查看:http://​www.jkeabc.com/​376605.html 或者 https://​sslmate.com/​blog/​post/​ct_redaction_in_chrome_53。