如何确保客户收到 faye 消息?
how to secure faye message to be received by client?
我正在使用 Faye 向订阅者发送消息。我需要确保订阅者收到消息,但我知道 faye 消息有可能在网络中丢失。例如订阅者不在线,则收不到消息...
我的问题是:如果 Faye 服务器知道订阅者的某种身份,是否有一种方法可以知道消息已被订阅者接收。或者有没有什么协议可以代替Faye同时又能保证消息的安全性?
Faye 不支持持久消息,因此您需要自己动手。一种方法是用 JSON 包装您的消息,并为每条消息使用时间戳。然后,当订阅者连接时,它会向 publisher/producer 发送一条消息,请求在最后一个有效时间戳之后的所有消息。服务器必须保存关键消息并根据请求重新发送。而且,其他消费者将不得不忽略早于上一个有效时间戳的消息。
JSON 包装器看起来像这样:
{
ts: 1408628582074,
version: "1.0",
message:{
"alert":"producer is now active..."
}
}
其中 "message" 节点可以是任何对象,包括字符串。
有一个基于 Faye 的开源节点项目可以帮助您解决这个问题here。
我正在使用 Faye 向订阅者发送消息。我需要确保订阅者收到消息,但我知道 faye 消息有可能在网络中丢失。例如订阅者不在线,则收不到消息...
我的问题是:如果 Faye 服务器知道订阅者的某种身份,是否有一种方法可以知道消息已被订阅者接收。或者有没有什么协议可以代替Faye同时又能保证消息的安全性?
Faye 不支持持久消息,因此您需要自己动手。一种方法是用 JSON 包装您的消息,并为每条消息使用时间戳。然后,当订阅者连接时,它会向 publisher/producer 发送一条消息,请求在最后一个有效时间戳之后的所有消息。服务器必须保存关键消息并根据请求重新发送。而且,其他消费者将不得不忽略早于上一个有效时间戳的消息。
JSON 包装器看起来像这样:
{
ts: 1408628582074,
version: "1.0",
message:{
"alert":"producer is now active..."
}
}
其中 "message" 节点可以是任何对象,包括字符串。
有一个基于 Faye 的开源节点项目可以帮助您解决这个问题here。