【问题标题】:How to handle undelivered messages on GAE Channel API?如何处理 GAE Channel API 上的未发送消息?
【发布时间】:2014-04-16 23:13:03
【问题描述】:

以下 Google 参考页面显示“如果无法传递邮件,则不会返回错误”: https://developers.google.com/appengine/docs/python/channel/functions

相比之下,Socket.IO 对消息有 ack 回调,因此您可以处理成功/错误: http://socket.io/#how-to-use

是否有人建议使用 Channel API 实现相同目标的解决方案?否则,Channel API 仅对 volatile 消息传递有用。而且我宁愿不重新发明轮子来尝试通过编写一个用于消息传递的事务系统来达到这种效果。

【问题讨论】:

    标签: google-app-engine channel-api


    【解决方案1】:

    坏消息是 Channel API 是单向且非阻塞的,因此无法等待响应或指定回调。不过……

    Channel Python API OverviewElements of the Channel API 部分表示服务器的角色包括“通过 HTTP 请求接收来自客户端的更新消息”。因此,通过在每个通道消息中发送唯一的消息标识符,客户端可以通过 HTTP 异步确认它们。服务器可以在每次超时后重新发送未确认的消息。

    也许它仍然是个坏消息,因为这个建议看起来太像你的“为消息编写一个事务系统”,尽管异步部分会比同步 socket.io 更好。

    【讨论】:

    • 谢谢@martin-berends。鉴于我需要可靠的消息传递和确认,并且我宁愿不构建多层消息传递(即,通道 + 轮询任何遗漏的内容),我打算只为客户需要更新的模型加上时间戳,并且经常投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2017-10-12
    • 1970-01-01
    • 2020-11-25
    • 2017-04-28
    • 2012-09-15
    • 2013-04-09
    相关资源
    最近更新 更多