加入白板房间
声网互动白板房间提供丰富的编辑工具,支持展示静态图片、动态 PPT、H5 课件等多种格式的文件,不同终端用户能在白板上实时展示想法,轻松实现多人互动协作。
本文介绍如何建立一个简单的项目,使用声网互动白板 SDK 加入房间并实现基础的白板功能。
由于浏览器的安全策略对除 127.0.0.1 以外的 HTTP 地址作了限制,声网互动白板 SDK 仅支持 HTTPS 协议或者 http://localhost ( http://127.0.0.1 ) ,请勿使用 HTTP 协议部署你的项目。
技术原理
下图展示了加入声网互动白板房间的基本流程。
当你的 App 客户端请求加入互动白板房间时:
- 你的 App 服务端使用 SDK Token 向声网互动白板服务端发起创建房间的请求。
- 成功创建房间后,声网互动白板服务端向你的 App 服务端返回新建房间的房间 UUID。
- 你的 App 服务端使用房间 UUID 生成 room Token,并将房间 UUID 和 room Token 发送给 App 客户端。
- App 客户端使用从声网控制台获取的 AppIdentifier 初始化互动白板 SDK 实例。
- App 客户端调用 SDK 的方法并传入房间 UUID 和 room Token 以加入互动白板房间。
前提条件
- 满足最低版本要求的浏览器。
- 有效的声网开发者账号。
- 已在声网控制台开启互动白板服务并获取白板项目的 AppIdentifer 和 SDK Token。
- Node.js 及 npm。
创建 Web 项目
-
创建一个文件夹作为白板应用的项目文件夹,在该文件夹下按照以下结构创建文件和目录:
.
├── index.html
├── scripts
│ └── index.js其中,
index.html
为白板应用的前端页面文件,scripts
目录下的index.js
文件为实现白板功能的 JavaScript 代码。 -
将以下代码复制到
index.html
文件中。html<!DOCTYPE html>
<html>
<head>
<script src="https://sdk.netless.link/white-web-sdk/2.15.16.js"></script>
<script src="./scripts/index.js"></script>
</head>
<body>
<div id="whiteboard" style="width: 100%; height: 100vh;"></div>
</body>
</html>其中的
<div id="whiteboard">
是互动白板的占位符。随后,你将通过 JavaScript 调用互动白板 SDK 的方法,来在这个<div>
注入白板的实体。
获取 SDK
选择如下任意一种方法获取声网互动白板 SDK:
- 使用 npm 集成
- 使用 CDN 集成
使用该方法需要先安装 npm,详见 npm 快速入门。
-
运行安装命令
Shellnpm install white-web-sdk
-
在项目的 Javascript 代码中引入声网互动白板 SDK
JavaScriptvar WhiteWebSdk = require("white-web-sdk");
该方法无需下载安装包。在 index.html
中,将如下代码添加到 <head>
的下一行:
<head>
<script src="https://sdk.netless.link/white-web-sdk/2.16.51.js"></script>
</head>
- 本文的示例使用方法二获取 SDK。
- 关于声网互动白板 SDK 的最新版本,详见发版说明。
实现步骤
现在,我们已经将声网互动白板 SDK 集成到项目中了。接下来我们要在 index.js
文件中调用声网互动白板 SDK 提供的核心 API 实现基础的白板功能。
1. 创建房间
在 App 客户端加入互动白板房间前,你需要在 App 服务端调用互动白板服务端 RESTful API 创建一个房间。详见创建房间(POST)。
请求示例
你可以使用以下 Node.js 脚本发送请求:
使用 Node.js 发送 HTTP 请求前安装 request
模块。你可以运行 npm install request
安装。
var request = require("request");
var options = {
method: "POST",
url: "https://api.netless.link/v5/rooms",
headers: {
"token": "你的 SDK Token",
"Content-Type": "application/json",
"region": "cn-hz",
},
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
如果方法调用成功,声网互动白板服务端将返回新建房间的信息,其中的 uuid
是房间的唯一标识,App 客户端加入房间时需要传入该参数。
响应示例
{
"uuid": "4a50xxxxxx796b", // 房间的 UUID
"teamUUID": "RMmLxxxxxx15aw",
"appUUID": "i54xxxxxx1AQ",
"isRecord": true,
"isBan": false,
"createdAt": "2021-01-18T06:56:29.432Z",
"limit": 0
}
2. 生成 Room Token
创建房间并获取新建房间的 uuid
后,你需要在 App 服务端生成 Room Token 并下发给 App 客户端。当 App 客户端加入房间时,声网互动白板服务端会使用该 Token 对其鉴权。
你可以通过以下方式在 App 服务端生成 Room Token:
- 使用代码生成 Room Token,详见在 App 服务端生成 Token。(推荐)
- 调用互动白板服务端 RESTful API 生成 Room Token,详见生成 Room Token(POST)。
下面以调用 RESTful API 的方式为例介绍如何生成 Room Token。
请求示例
你可以使用以下 Node.js 脚本发送请求:
使用 Node.js 发送 HTTP 请求前安装 request
模块。你可以运行 npm install request
安装。
var request = require("request");
var options = {
method: "POST",
// 将 <房间的 UUID> 替换成你的房间 UUID
url: "https://api.netless.link/v5/tokens/rooms/<房间的 UUID>",
headers: {
"token": "你的 SDK Token",
"Content-Type": "application/json",
"region": "cn-hz",
},
body: JSON.stringify({ lifespan: 3600000, role: "admin" }),
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
如果方法调用成功,声网互动白板服务端将返回生成的 Room Token。
响应示例
"NETLESSROOM_YWs9XXXXXXXXXXXZWNhNjk" // Room Token
3. 创建 WhiteWebSdk 实例
创建并初始化一个客户端 WhiteWebSdk
实例。初始化 WhiteWebSdk
时,你需要填入以下参数:
appIdentifier
: 互动白板项目的 AppIdentifier。详见获取 AppIdentifier。region
:数据中心,必须和创建房间时设置的数据中心一致。
将以下代码复制到 index.js
文件中:
var whiteWebSdk = new WhiteWebSdk({
// 设置 AppIdentifier。
appIdentifier: "你的 AppIdentifier",
// 设置数据中心为中国杭州。
region: "cn-hz",
});
4. 加入房间
初始化 WhiteWebSdk
实例后,调用 joinRoom
加入房间。调用该方法时,需要传入以下参数:
uuid
: 房间 UUID,即房间的唯一标识符。详见创建房间。uid
: 用户的唯一标识符,字符串格式,长度不能超过 1024 字节。如果你使用 2.15.0 或之后版本的 SDK,必须传入该参数;如果你使用 2.15.0 之前版本的 SDK,则不需要传入该参数。roomToken
: 用于鉴权的 Room Token。生成该 Room Token 使用的房间 UUID 必须和上面的房间 UUID 一致。详见生成 Room Token。
将以下代码复制到 index.js
文件中:
var joinRoomParams = {
// 设置房间 UUID。
uuid: "你的房间 UUID",
// 设置用户唯一标识符。如果你使用 2.15.0 之前版本的 SDK,不需要传入 uid 参数。
uid: "用户 uid",
// 设置 Room Token。
roomToken: "你的 Room Token",
};
// 加入房间,并将白板展示到网页上。
whiteWebSdk
.joinRoom(joinRoomParams)
.then(function (room) {
room.bindHtmlElement(document.getElementById("whiteboard"));
})
.catch(function (err) {
console.error(err);
});
运行项目
用浏览器打开 index.html
文件,将看到一个空白页面。如果应用成功运行,你可以用鼠标在该页面上写写画画并看到笔迹。