设计问题

消息通知

之前#的消息系统:

  • 每个用户一个消息箱
  • 消息箱自带未读计数
  • 消息靠SIGUSR2通知
  • 接收方有通知计数
  • 每个计数需要一次回车
  • 只能给特定登录发送消息
  • 消息内有目标登录
    • 查看消息时,略过目标不是本登录的消息

对于XMPP,无法确定应发给哪个登录

  • 通知所有登录

消息发送过程:

  • 查看是否能发
  • 投递消息
  • 通知新消息

故,XMPP情况下:

  • 有一个登录能发,则认为能发
  • 投递消息和登录无关,这个和原来一样
  • 通知所有登录有新消息

但是,通知方面:

  • 如果每条消息需要一次回车,则在有XMPP情况下,普通登录均为无用回车

所以修改:

  • 若有消息未处理则不通知

导致问题:

  • 若只有普通登录无XMPP登录,则只通知一次导致接收方只能弹出一条消息

修改:

  • 若只有普通登录,则
    • 对于消息目标登录,发送多个通知
    • 对于其他登录,发送1个通知