实现聊天消息和信令收发功能

简介

直播间内学生可以和老师进行交流,这里就需要用到即时通信 im 来进行聊天和一些信令的传输。

1.消息收发

消息分为普通文本消息、图片消息、自定义消息、系统通知等

//发送普通文本消息
client.sendMessage('hello world')

//发送图片消息
client.sendImageMessage(imageFile)

// 监听普通文本消息
client.on('text-message', msg => {
  console.log('普通文本消息来了', msg)
})
// 监听图片消息
client.on('img-message', msg => {
  console.log('图片消息来了', msg)
})

// 监听系统消息
client.on('system-message', msg => {
  console.log('系统消息来了', msg)
})

说明: 如果需要在发送文本或者图片消息中增加一些额外信息(不可见),可以添加第二个参数customPayloadData,具体参考sendMessage

im 不仅提供了聊天消息、系统通知等,还提供了运维控制、权限控制、活动、答题等功能

2.禁言

2.1全体禁言:

当老师等管理端开启全员禁言或者取消全员禁言时,群里的学生们就会收到all-muted事件,此时在 view 层可以禁用输入框。

// 老师管理端进行全体禁言操作
client.muteAll(true)
// 老师管理端取消全体禁言操作
client.muteAll(false)

// 学生端监听禁言操作
client.on('all-muted', forbid => {
  if (forbid) {
    console.log('全员禁言状态')
  } else {
    console.log('取消全员禁言状态')
  }
})

2.2单独禁言某个学生:

老师可以单独对某个学生进行禁言,禁言后只有被禁言的这个学生会收到禁言通知,view 层做相应的操作即可

// 老师管理端禁言某个学生
client.muteUser({
  uid: 123456,
  status: true
})

// 学生端监听事件
client.on('user-muted', forbid => {
  if (forbid) {
    console.log('被禁言状态')
  } else {
    console.log('取消禁言状态')
  }
})

3.问答、活动、货架等

当老师等管理端发送活动、问答、货架商品等,学生端就会收到相对应的事件

3.1 讲师端获得列表,并进行发送

// 获得type类型的活动列表
client.getActivityList(type).then(res => {
  console.log('拿到活动列表', res.data)
})
// 启用/停用活动
client.changeActivityStatus(activityId, status).then(() => {
  console.log('操作成功')
})

// 获取问答列表
client.getAskList().then(res => {
  console.log('拿到答题列表', res.data)
})
// 发送题目给学生
client.sendAsk(askId).then(() => {
  console.log('发送成功')
})

// 获得货架商品列表
client.getGoodsList().then(() => {
  console.log('获得货架列表')
})
// 上架/下架商品
client.changeGoodsStatus(goodsId, status).then(() => {
  console.log('操作成功')
})

3.2 学生端进行事件监听

client.on('activity-received', data => {
  console.log('收到活动信息了')
})

client.on('ask-received', data => {
  console.log('收到问答了')
})

client.on('shelf-status-change', data => {
  console.log('收到货架状态变更')
})

results matching ""

    No results matching ""