New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

js-common

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

js-common

edp project

  • 0.0.1
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

教室基础环境

初始化教室的步骤如下:

  1. 加载 path/classroom.js
  2. 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

满足以下要求即可上课:

  1. env 相同
  2. room id 相同
  3. 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) {
        // 可能发生多次 CLASSROOM_CONNECT_SUCCESS 事件
        // data.reconnect 为 true 表示重连后的再次进入
    }
)
.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) {
        // data.totalUserCount
    }
);

当前教室人数

var eventEmitter = BJY.eventEmitter;
eventEmitter
.on(
    eventEmitter.USER_COUNT_CHANGE,
    function (event, data) {
        // data.userCount
    }
);

名单

在一个教室中,有人进,也会有人出,因此 SDK 提供了以下三个事件:

var eventEmitter = BJY.eventEmitter;
eventEmitter
.on(
    eventEmitter.USER_ADD
    function (event, data) {
        // data.userList 为了批量添加考虑设计成数组
    }
)
.on(
    eventEmitter.USER_UPDATE
    function (event, data) {
        // data.user
        // data.update 更新的部分
    }
)
.on(
    eventEmitter.USER_REMOVE
    function (event, data) {
        // data.user
    }
);

消息

消息抽象为收发两个动作,通过频道参数,可自由实现为不同的功能,如聊天、问答。

发消息

var eventEmitter = BJY.eventEmitter;
eventEmitter.trigger(
    eventEmitter.MESSAGE_SEND,
    {
        content: '',
        channel: '频道'
    }
);

收消息

var eventEmitter = BJY.eventEmitter;
eventEmitter.on(
    eventEmitter.MESSAGE_RECEIVE,
    function (event, data) {
        // data 里包含频道、消息内容、发送者信息
    }
);

公告

请求现有的公告

var eventEmitter = BJY.eventEmitter;
eventEmitter.trigger(
    eventEmitter.NOTICE_REQ,
);

收到现有的公告

var eventEmitter = BJY.eventEmitter;
eventEmitter.on(
    eventEmitter.NOTICE_RES,
    function (event, data) {
        // data 里有公告内容
    }
);

修改公告

var eventEmitter = BJY.eventEmitter;
eventEmitter.trigger(
    eventEmitter.NOTICE_CHANGE_TRIGGER,
    {
        content: ''
    }
);

收到最新修改的公告

var eventEmitter = BJY.eventEmitter;
eventEmitter.on(
    eventEmitter.NOTICE_CHANGE,
    function (event, data) {
        // data 里有消息内容和发送者信息
    }
);

FAQs

Package last updated on 09 Jun 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc