事件发布及订阅(多端登录状态同步)

用户可以通过事件发布及订阅,来实现"发布-订阅"的设计模式编程方法。可应用于多端登录状态同步、用户个性化信息订阅、逻辑异步流处理等场景。

发布订阅事件

示例代码

  nim.publishEvent({
    type: 100000,
    value: 2,
    custom: 'hello world',
    vaildTime: 60,
    sync: false,
    done: publishEventDone
  });
  function publishEventDone(error, obj) {
    console.log('发布事件' + (!error?'成功':'失败'), error, obj);
  }

参数解释

订阅事件

示例代码

  nim.subscribeEvent({
      type: 100000,
      accounts: ['cs3', 'cs4'],
      subscribeTime: 70,
      sync: true,
      done: subscribeEventDone
  });
  function subscribeEventDone(error, obj) {
      console.log('订阅事件' + (!error?'成功':'失败'), error, obj);
  }

参数解释

按账号取消订阅事件

示例代码

  nim.unSubscribeEventsByAccounts({
      type: 100000,
      accounts: ['cs3'],
      done: unSubscribeEventDone
  });
  function unSubscribeEventDone(error, obj) {
      console.log('取消订阅事件' + (!error?'成功':'失败'), error, obj);
  }

参数解释

取消指定事件的全部订阅关系

示例代码

  nim.unSubscribeEventsByType({
      type: 100000,
      done: unSubscribeEventDone
  });
  function unSubscribeEventDone(error, obj) {
      console.log('取消订阅事件' + (!error?'成功':'失败'), error, obj);
  }

参数解释

按账号获取指定事件的订阅关系

示例代码

  nim.querySubscribeEventsByAccounts({
      type: 100000,
      accounts: ['cs3'],
      done: querySubscribeEventDone
  });
  function querySubscribeEventDone(error, obj) {
      console.log('获取订阅列表' + (!error?'成功':'失败'), error, obj);
  }

参数解释

服务器推送的订阅事件(初始化)

示例代码

  var nim = NIM.getInstance({
    onpushevents: onPushEvents
  });
  function onPushEvents(param) {
    console.log('订阅事件', param.msgEvents);
  }

参数解释

多端在线状态同步

多端在线状态同步基于事件的发布与订阅模型,参见事件发布及订阅

实现方式