跳转至

初始化

引入

IM SDK 支持以下引入方式, 任选其一即可:

<!-- HTTP -->
<script src="http://cdn.ronghub.com/RongIMLib-2.5.2.js"></script>
<!-- HTTPS -->
<script src="https://cdn.ronghub.com/RongIMLib-2.5.2.js"></script>
<!-- 压缩版 -->
<script src="https://cdn.ronghub.com/RongIMLib-2.5.2.min.js"></script>
require.config({
  paths: {
    RongIMLib: '//cdn.ronghub.com/RongIMLib-2.5.2'
  }
});
require(['RongIMLib'], function(RongIMLib) {
  // ...
});
/* 
  Vue CLI 链接 Demo: https://github.com/rongcloud/websdk-demo/tree/master/vue-cli
  protobuf 下载地址: https://cdn.ronghub.com/protobuf-2.3.6.min.js
 */
var RongIMLib = require('../../static/js/RongIMLib-2.5.2.js')  // RongIMLib 相对路径
var Protobuf = require('../../static/js/protobuf-2.3.6.min.js')  // protobuf 相对路径
var RongIMClient = RongIMLib.RongIMClient
RongIMClient.init('appkey', null, {
  protobuf: Protobuf
})
/* 
  electron-vue 链接 Demo: https://github.com/rongcloud/websdk-demo/tree/master/electron-vue
  protobuf 下载地址: https://cdn.ronghub.com/protobuf-2.3.6.min.js
 */
require('../../../static/js/RongIMLib-2.5.2.js')
require('../../../static/js/protobuf-2.3.6.min.js')
var RongIMLib = window.RongIMLib
var RongIMClient = RongIMLib.RongIMClient
// 使用 TypeScript, 需额外引入 ts 文件:
// ts 下载地址: https://cdn.ronghub.com/RongIMLib-2.5.2.d.ts
/// <reference path="path/RongIMLib-2.5.2.d.ts" />
module RongIM {
  export class Client {
    static init(params: any): void{
      var RongIMClient = RongIMLib.RongIMClient;
      RongIMClient.init('appkey');
      // ...
    }
  }
}

初始化

参数说明:

参数 类型 必填 说明 最低版本
appkey String 应用的唯一标识 2.0.0

代码示例:

var appkey = 'kj29chm026yyn'
RongIMLib.RongIMClient.init(appkey);

状态监听器

注意事项

  1. 状态为 断开连接其他设备登录 时不可调用重连
  2. 状态为 网络不可用 时不建议调用断开连接
  3. 状态为 网络不可用 时可调用重连

当前连接状态变化时, 将触发状态监听器

代码示例:

RongIMClient.setConnectionStatusListener({
  onChanged: function (status) {
    // status 标识当前连接状态
    switch (status) {
      case RongIMLib.ConnectionStatus.CONNECTED:
        console.log('链接成功');
        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('网络不可用, 此时可调用 reconnect 进行重连');
        break;
      default:
        console.log('链接状态为', status);
        break;
    }
  }
});

链接状态码说明:

状态 说明 枚举值
RongIMLib.ConnectionStatus.CONNECTED 连接成功 0
RongIMLib.ConnectionStatus.CONNECTING 连接中 1
RongIMLib.ConnectionStatus.DISCONNECTED 链接已断开 2
RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE 网络错误 3
RongIMLib.ConnectionStatus.CONNECTION_CLOSED 链接已关闭 4
RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT 其他设备登录(被踢) 6
RongIMLib.ConnectionStatus.WEBSOCKET_UNAVAILABLE WebSocket 不可用 7
RongIMLib.ConnectionStatus.DOMAIN_INCORRECT 域名错误(需通过开发者后台检查安全域名设置) 12
RongIMLib.ConnectionStatus.REQUEST_NAVI 正在请求导航 201
RongIMLib.ConnectionStatus.RESPONSE_NAVI 请求导航成功 202
RongIMLib.ConnectionStatus.RESPONSE_NAVI_ERROR 请求导航失败 203
RongIMLib.ConnectionStatus.RESPONSE_NAVI_TIMEOUT 请求导航超时 204

消息监听器

收到消息时, 将触发消息监听器

代码示例:

RongIMClient.setOnReceiveMessageListener({
    // 接收到的消息
  onReceived: function (message) {
    var messageContent = message.content;
    // 判断消息类型
    switch(message.messageType) {
      case RongIMClient.MessageType.TextMessage: // 文字消息
        console.log('文字内容', messageContent.content);
        break;
      case RongIMClient.MessageType.ImageMessage: // 图片消息
        console.log('图片缩略图 base64', messageContent.content); 
        console.log('原图 url', messageContent.imageUri);
        break;
      case RongIMClient.MessageType.HQVoiceMessage: // 音频消息
        console.log('音频 type ', messageContent.type); // 编解码类型,默认为 aac 音频
        console.log('音频 url', messageContent.remoteUrl); // 播放:<audio src={remoteUrl} />
        console.log('音频 时长', messageContent.duration);
        break;
      case RongIMClient.MessageType.RichContentMessage: // 富文本(图文)消息
        console.log('文本内容', messageContent.content);
        console.log('图片 base64', messageContent.imageUri);
        console.log('原图 url', messageContent.url);
        break;
      case RongIMClient.MessageType.UnknownMessage: // 未知消息
        console.log('未知消息, 请检查消息自定义格式是否正确', message);
        break;
      default:
        console.log('收到消息', message);
        break;
    }
  }
});

提示

音频消息(HQVoiceMessage)支持版本: RongIMLib 2.5.0 及以上. 低版本音频消息(HQVoiceMessage)可通过 自定义消息 实现