# 客户端在线状态

监听客户端上下线状态变化

本特性为高级功能,默认不开通,可以在我的应用->查看详情,高级功能里自助开通。

实时监听客户端上下线状态变化,获取在线客户端列表。

资费:免费

# 初始化客户端在线状态

要监听一个的客户端在线状态,必须为该客户端指定 userId,否则无法获取客户端在线状态。

var realTime = new IRealTime({
  appkey: '您的appkey',
  host: 'hk.irealtime.cn', // hongkong region
  userId: 'user01',
  onConnected: function() {
      console.log("连接成功...")
  },
  onDisconnected: function() {
      console.log("连接断开...")
  },
  onConnectFailed: function(error) {
      console.log("连接失败...", error)
  }
})

# 监听客户端上下线状态变化

客户端上下线有四种 status:
online: 上线,客户端已经订阅了 channel,因为网络的原因,断网重连
offline: 下线或断网,客户端已经订阅了 channel,手动关闭或网络断开
join: 订阅 channel, 客户端第一次订阅 channel
leave: 取消 channel 的订阅,客户端主动取消某个 channel 的订阅

realTime.subscribePresence({
    channel: "userOnline",
    onSuccess: function() {
      console.log("订阅上线成功...")
    },
    onMessage: function(res) {
      console.log(res)
      // res 的数据结构
      /*
      {
        channel: "userOnline"    // 要订阅上下线的通道
        status: "online"         // 上线的状态
        time: 1612419426513      // 上线时间毫秒数
        userData: ""             // 设置的用户数据,如果不设置默认为空
        userId: "user01"         // 用户的id
      }
      */
    },
    onFailed: function(error) {
      console.log("订阅上线失败...", error)
    }
})

# 取消监听客户端上下线

realTime.unSubscribePresence({
  channel: "userOnline",
  onSuccess: function() {
    console.log("取消订阅上线成功...")
  },
  onFailed: function(error) {
    console.log("取消订阅上线失败...", error)
  }
})

# 客户端获取当前在线客户端列表

本特性为高级功能,默认不开通,可以在我的应用->查看详情,高级功能里自助开通。

资费: 免费

# 根据 channel 获取当前在线客户端列表

realTime.hereNow({
  channels: ['userOnline'],
  onMessage: (res) => {
    console.log(res)
    // res的数据结构
    /*
    {
      code: 200,
      data: [
        {
          channel: 'userOnline',
          users: [
            {
              userId: "user01",
              userData: "",
              userOnlineClientAmount: 1,
            }
          ]
        }
      ]
    }
    */
  }
})