【问题标题】:openfire offile notification/triggeropenfire offile 通知/触发器
【发布时间】:2016-10-05 21:05:47
【问题描述】:

我在 iOs 和 php 网站中使用 openfire 进行聊天应用程序。一切正常。

当对手用户离线并且您正在向该用户发送消息时,我还实现了推送通知(简称离线消息的推送通知)。我已经实现了上面可用的东西:Openfire offline notification through PHP

现在,客户要求我实现另外一项功能,其中包括:

  • 当任何用户离线时向管理员发送邮件。

但现在没有任何挂钩可用于跟踪用户状态。那么如何实现呢?

我尝试了什么

我还尝试了一种技巧,我向所有用户发送广播消息,如果任何用户处于关闭状态,那么我的 CallbackOnOffline 插件将调用,但这里它的 不发送广播消息到离线用户

【问题讨论】:

    标签: php sockets openfire


    【解决方案1】:

    您可以尝试使用Presence.Type.unavailable“拦截” Presence 数据包

    Openfire 有一个 ConnectionCloseListener(在 SessionManager 类中)触发 Presence 不可用。

    如果你阅读类 cmets,它会说

      // Send an unavailable presence to the user's subscribers
      // Note: This gives us a chance to send an unavailable presence to the
      // entities that the user sent directed presences
    

    所以可能有一个管理用户可以自动订阅所有用户,接收存在不可用,这样你就可以直接截取数据包给这个用户发送你的电子邮件。

    使用相反的逻辑,您将能够强制直接存在于您控制的事物并拦截该实体不可用的存在

    【讨论】:

    • 我 100% 同意你的逻辑,但问题在这里我需要让一个用户一直在浏览器中登录,我可以在其中实现监听器并可以基于触发 ajax那。但是,如果没有人登录系统并想跟踪用户的存在怎么办???是否可以触发与 CallbackOnOffline 插件相同的任何 url ?
    • 使用 Openfire(所以我也打赌任何其他服务器),您可以拦截一种 Stanza(存在),如果需要添加过滤器(例如:“to=admin@adminmessages”)。因此,只需拦截您的员工或默认添加和管理用户的任何 Presence 广告(您可以复制 Presence,或者只是强制订阅等)。从理论上讲,您不需要客户端始终在线,您只需添加一个先决条件即可让 Openfire 发送 Presence。您将在 openfire“意识到”管理员离线之前拦截存在
    • "添加一个先决条件,让 Openfire 发送 Presence" 但是这里发送给谁?我想离线调用一个php脚本,可以吗?
    • 好吧伙计,一切皆有可能。您可以拦截 Presence,在拦截时,您可以做所有您想做的事,还可以调用 servlet 调用 php 脚本,调用 ws 调用 php 脚本,使用使用该数据库的 php 作业更新数据库等等。但这真的超出了最初的问题,你知道你的架构;)
    • 您可以在chat.stackoverflow.com/rooms/114182/room-for-er-kt-and-mrpk 上进行更多聊天吗?
    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2023-03-22
    • 2013-05-28
    • 2019-02-26
    相关资源
    最近更新 更多