Web IM 集成介绍

如果要实现RTC功能,你需要满足以下条件:

搭建环境之前需要对环信提供的参考文档有个初步的了解,主要为以下形式,请根据下面的关键字选择源码参考

  • 基于 react 开发的完整的实时 Demo ,关键字:至少 IE9完整流程webpack+react

1. 首先将本源码克隆到本地

$ git clone https://github.com/easemob/webim.git

2. 去官网安装NodeJS,建议4+

  • 因为整套代码需要依赖于npm NodeJS 的包管理工具,安装 NodeJS 会默认安装 NPM 工具

3. 定位到 webim/demo 目录 在终端执行下面的命令,安装测试所需要的依赖模块

  • 保证此过程没有 error 终止为成功,如果有错误中断,请保留错误日志并再次尝试,大多数情况是网络原因导致的无法连接而中断
npm i

4. 上述步骤成功后

# 启动测试环境
npm start (如果需要https 通过HTTPS=true npm start启动)
# 打包发布,发布后文件在 webim/demo/build 目录下
npm run build

5. 浏览器访问即可看到测试页面:

可以通过以下2种方式引用 Web SDK:

  • 使用 NPM
  • 将文件复制到本地,引用本地文件

NPM

Web SDK已发布到NPM。采用如下方法集成:

1. 通过 NPM 安装 Web SDK。

npm install easemob-websdk --save

2. 先 import ,再访问 Web IM 。

import websdk from "easemob-websdk"

如果是 Typescript, 这样引入类型 EasemobChat:

import websdk, { EasemobChat } from 'easemob-websdk'

注:该方式只引用了 Web SDK ,仍需在项目里配置 WebIMConfig 文件内的参数,用于实例化 websdk。

引用本地文件

1. 下载demo后,将sdk目录下的 webimSDK.js(现SDK包命名为websdk+版本号的形式,例如:websdk3.4.2.js)、EMedia_x1v1.js、EMedia_sdk-dev.js,按照实际项目需求选择对应的SDK拷贝到系统相应的目录下。PS:websdk:提供全功能即时通讯SDK接口,Emedia:提供音视频功能相关SDK接口。如需音视频功能,EMedia_x1v1.js与EMedia_sdk-dev.js只引用EMedia_x1v1.js即可

2.新版本中 WebIMConfig 文件只做参数定义方便实例化 SDK 时使用,仅与自己项目结构有关。详细使用可以查看 /demo/src/config/WebIM.js文件

3. 新建 html 文件并引入相关 js 脚本。

<script type='text/javascript' src='WebIMConfig.js'></script>
<script type='text/javascript' src='webimSDK.js'></script>

注意:Web SDK 向下兼容V1.1.2和V1.1.1。关于详细的引用文件和配置参数(WebIMConfig)的方法,请查看本页“兼容性”的内容。

初始化 WebIM.connection 和 构造消息 WebIM.message, 需要在中间加上 default,如:WebIM.default.message。

3.0 SDK,在 WebIMConfig.js 文件内进行以下配置:

socketServer: '//im-api-v2.easemob.com/ws',    // socket Server地址

restServer: '//a1.easemob.com',               // rest Server地址

appkey: 'easemob-demo#chatdemoui',        // App key

https : false,                            // 是否使用https

isHttpDNS: true,                          // 3.0 SDK支持,防止DNS劫持从服务端获取XMPPUrl、restUrl

isMultiLoginSessions: false,              // 是否开启多页面同步收消息,注意,需要先联系商务开通此功能

isDebug: false,                           // 打开调试,会自动打印log,在控制台的console中查看log

autoReconnectNumMax: 2,                   // 断线重连最大次数

heartBeatWait: 30000,                     // 心跳间隔(只在小程序中使用)

delivery: false,                           // 是否发送已读回执

useOwnUploadFun: false,         // 是否使用自己的上传方式(如将图片文件等上传到自己的服务器,构建消息时只传url)

deviceId: 'webim'               // 设备ID,默认可不传,如果传一个固定值,在没开启多端登录的情况下同一个账号会互踢

注意:

为满足不同客户的业务需求,环信在多地部署了数据中心。不同数据中心的REST API请求域名、WebSocket访问域名不同。请根据您所在数据中心进行配置。

环信不同数据中心的REST API请求域名、WebSocket访问域名:

数据中心REST API请求地址WebSocket访问域名
国内1区a1.easemob.com 或 a1.easecdn.comim-api-v2.easemob.com 或 im-api-v2.easecdn.com
国内2区a31.easemob.com 或 a31.easecdn.comim-api-v2-31.easemob.com 或 im-api-v2-31.easecdn.com
国内VIP区请咨询商务经理请咨询商务经理
客服专用请咨询商务经理请咨询商务经理
新加坡1区a1-sgp.easemob.com 或 a1-sgp.easecdn.comim-api-sgp-v2.easemob.com 或 im-api-sgp-v2.easecdn.com
美东1区a41.easemob.com 或 a41.easecdn.commsync-api-41.easemob.com 或 msync-api-41.easecdn.com
法兰克福1区a51.easemob.com 或 a51.easecdn.commsync-api-51.easemob.com 或 msync-api-51.easecdn.com

应用所在数据中心可以在环信用户管理后台>应用信息中查看:Console中查看请求域名

2.0 SDK,在 webim.config.js 文件内进行以下配置:

xmppURL: '//im-api.easemob.com',           // xmpp Server地址,对于在console.easemob.com创建的appKey,固定为该值  
                                          
apiURL: 'http://a1.easemob.com',           // rest Server地址,对于在console.easemob.com创建的appkey,固定为该值  
                                          
appkey: 'easemob-demo#chatdemoui',         // App key

https : false,                             // 是否使用https

isHttpDNS: true,                           // 防止DNS劫持从服务端获取XMPPUrl、restUrl

isMultiLoginSessions: false,               // 是否开启多页面同步收消息,注意,需要先联系商务开通此功能

isDebug: false,                            // 打开调试,会自动打印log,在控制台的console中查看log

autoReconnectNumMax: 2,                    // 断线重连最大次数

autoReconnectInterval: 3,                  // 断线重连每次尝试连接的间隔

heartBeatWait: 30000,                      // 使用webrtc(视频聊天)时发送心跳包的时间间隔,单位ms

delivery: true,                            // 是否发送已读回执

注:建议 xmppURL、apiURL、https 三个参数统一,否则 IE9 以下会报拒绝访问的错误。

例:

  • https: false
xmppURL: 'im-api.easemob.com',

apiURL: 'http://a1.easemob.com',

appkey: 'easemob-demo#chatdemoui',

https : false, 

isMultiLoginSessions: false

isAutoLogin: true

  • https: true
xmppURL: 'im-api.easemob.com',

apiURL: 'https://a1.easemob.com',

appkey: 'easemob-demo#chatdemoui',

https : true, 

isMultiLoginSessions: false 

isAutoLogin: true

兼容V1.1.2

Web SDK V1.4.5 向下兼容 V1.1.2。如果直接用 V1.1.2 的 Demo 嵌入 V1.4.5 的 SDK ,需要修改旧的 webim.config.js,在第一行WebIM.config = {的前面插入一行var WebIM = {};。完成后,示例如下:

var WebIM = {};
  WebIM.config = {

兼容V1.1.1

Web SDK V1.4.5 向下兼容 V1.1.1。从V1.1.1升级到V1.4.5时,需要做如下操作:

第1步:修改引入的 SDK 文件

1. 下载 Web SDK V1.4.5 并解压后,将 /sdk/dist/websdk-1.4.5.js 和 /sdk/disk/websdk.shim.js 拷贝到系统相应的目录下。

2. 在原来的引用 SDK 的 html 文件中增加一行代码 window.WebIM = {}; ,并使用上述两个文件替换原来引用的 SDK 的 js 文件。

替换前:

<!--sdk相关的js-->
<script type='text/javascript' src='static/sdk/strophe.js'></script>
<script type='text/javascript' src='static/sdk/easemob.im-1.1.1.js'></script>
<script type='text/javascript' src='static/sdk/easemob.im.shim.js'></script>
<!--webim相关配置-->
<script type='text/javascript' src='static/js/easemob.im.config.js'></script>

替换后:

<!--sdk相关的js-->
<script type='text/javascript' src='static/sdk/strophe.js'></script>
<script>
    window.WebIM = {};       // 这行代码需要加在引用strophe.js文件的代码后面
</script>
<script type='text/javascript' src='static/sdk/websdk-1.4.5.js'></script>
<script type='text/javascript' src='static/sdk/websdk.shim.js'></script>
<!--webim相关配置-->
<script type='text/javascript' src='static/js/easemob.im.config.js'></script>

3. 将 easemob.im.config.js 文件中的参数 multiResources 修改为 isMultiLoginSessions

第2步:修改 websdk-1.4.5.js 文件

1. 在 SDK 文件下搜索//class,将下面的connection = function connection(options) 改成window.WebIM.connection = function connection(options)

2. 在 SDK 文件下搜索connection.prototype.registerUser = function (options),在上面一行添加var connection = window.WebIM.connection;


上一页:Web IM 介绍

下一页:初始化及登录