教室基础环境
初始化教室的步骤如下:
- 加载
path/classroom.js
BJY.init(data)
数据
BJY.init({
env: '环境,可选值 test/beta/production',
token: '验证 token',
class: {
id: 'room id',
name: '课程名称',
startTime: '开始时间,精确到毫秒的时间戳',
endTime: '结束时间,精确到毫秒的时间戳'
},
user: {
number: '用户 number',
avatar: '头像地址',
name: '用户昵称',
type: '用户类型 0-学生 1-老师 2-助教'
},
teacher: {
number: '老师 number',
avatar: '头像地址',
name: '老师昵称',
type: 1
}
});
mock
满足以下要求即可上课:
- env 相同
- room id 相同
- teacher 只能有一个
登录进度
调用 init
之后,会尝试去连接主服务器、信令服务器。
在连接的过程中,教室不可用,为了保证良好的用户体验,通常会设计一个全屏的进度条界面。
var eventEmitter = BJY.eventEmitter;
eventEmitter
.one(
eventEmitter.MASTER_SERVER_CONNECT_SUCCESS,
function () {
}
)
.one(
eventEmitter.SERVER_INFO_FETCH_SUCCESS,
function () {
}
)
.one(
eventEmitter.ROOM_SERVER_CONNECT_SUCCESS,
function () {
}
)
.one(
eventEmitter.ROOM_SERVER_LOGIN_SUCCESS,
function () {
}
)
.one(
eventEmitter.ROOM_SERVER_LOGIN_FAIL,
function (event, data) {
}
)
.one(
eventEmitter.ROOM_SERVER_LOGIN_OVERFLOW,
function(event,data) {
}
)
.one(
eventEmitter.CLASSROOM_CONNECT_FAIL,
function () {
}
);
初始化界面
var eventEmitter = BJY.eventEmitter;
eventEmitter
.one(
eventEmitter.VIEW_RENDER_TRIGGER,
function (event, data) {
}
);
重连
因为网络环境的问题,教室可能中途掉线,因此当发生重连时,需提示用户。
var eventEmitter = BJY.eventEmitter;
eventEmitter
.on(
eventEmitter.CLASSROOM_CONNECT_SUCCESS,
function (event, data) {
}
)
.on(
eventEmitter.CLASSROOM_CONNECT_START,
function (event, data) {
if (data.reconnect) {
}
}
)
.on(
eventEmitter.CLASSROOM_CONNECT_END,
function (event, data) {
if (data.reconnect) {
}
}
);
人数
进教室总人数(包括退出教室的)
var eventEmitter = BJY.eventEmitter;
eventEmitter
.on(
eventEmitter.TOTAL_USER_COUNT_CHANGE,
function (event, data) {
}
);
当前教室人数
var eventEmitter = BJY.eventEmitter;
eventEmitter
.on(
eventEmitter.USER_COUNT_CHANGE,
function (event, data) {
}
);
名单
在一个教室中,有人进,也会有人出,因此 SDK 提供了以下三个事件:
var eventEmitter = BJY.eventEmitter;
eventEmitter
.on(
eventEmitter.USER_ADD
function (event, data) {
}
)
.on(
eventEmitter.USER_UPDATE
function (event, data) {
}
)
.on(
eventEmitter.USER_REMOVE
function (event, data) {
}
);
消息
消息抽象为收发两个动作,通过频道参数,可自由实现为不同的功能,如聊天、问答。
发消息
var eventEmitter = BJY.eventEmitter;
eventEmitter.trigger(
eventEmitter.MESSAGE_SEND,
{
content: '',
channel: '频道'
}
);
收消息
var eventEmitter = BJY.eventEmitter;
eventEmitter.on(
eventEmitter.MESSAGE_RECEIVE,
function (event, data) {
}
);
公告
请求现有的公告
var eventEmitter = BJY.eventEmitter;
eventEmitter.trigger(
eventEmitter.NOTICE_REQ,
);
收到现有的公告
var eventEmitter = BJY.eventEmitter;
eventEmitter.on(
eventEmitter.NOTICE_RES,
function (event, data) {
}
);
修改公告
var eventEmitter = BJY.eventEmitter;
eventEmitter.trigger(
eventEmitter.NOTICE_CHANGE_TRIGGER,
{
content: ''
}
);
收到最新修改的公告
var eventEmitter = BJY.eventEmitter;
eventEmitter.on(
eventEmitter.NOTICE_CHANGE,
function (event, data) {
}
);