PubNub:如何获取最后 5 条消息
PubNub: how to get last 5 messages
我的 Pubnub 频道中有二十多条消息。然后我尝试使用
获取最后五条消息
let startTimeToken = dateToTimeToken(NSDate(timeIntervalSince1970: 0)) //unix time interval 0
let endTimeToken = dateToTimeToken(NSDate()) // now
self.pubnub?.historyForChannel(room, start: startTimeToken, end: endTimeToken,
limit: 5, reverse: true, includeTimeToken: true, withCompletion: {
(result, status) -> Void in
}
并发现,无论反向参数是真还是假,我总是收到前五条消息,而不是最后一条。
获取最后五条消息的唯一方法是
self.pubnub?.historyForChannel(room, start: endTimeToken, end: nil,
limit: 5, reverse: false, includeTimeToken: true, withCompletion: {
(result, status) -> Void in
}
但这到底是什么?
开始 = 结束,结束 = 零,反向 = 假
你收到最后 5 条消息?
首先我不明白这个逻辑。为什么第一个语句完全忽略反向参数?
PubNub 历史课 ;)
历史 API 一开始可能有点晦涩难懂,但是一旦您了解了它的工作原理,您就可以得到您需要的东西。也就是说,我们 (PubNub) 正在开发一个更强大、更易于使用、功能更丰富的历史记录 API.
您问题的答案
- 当您提供
start
和 end
参数时,reverse
参数将被忽略,而是使用默认值,即 false
,这意味着获取消息从最新的时间标记(end
参数)开始并及时向后移动,直到检索到 5 条消息(您的 count
参数值)。
- 如果你只想要最后5条消息(最新的5条消息),只需将
start
和end
设置为nil
,将count
设置为[=20] =] 和 reverse
到 false
。如果您想要前 5 条消息(最早的 5 条消息),则将 reverse
设置为 true
。
PubNub 历史的一些基本规则
如果你能学会以下history
API的规则,你将成为这方面的专家。
- 每次
history
调用最多可返回 100 条消息。您可以使用 count
参数指定少于 100 条,但不能指定更多。如果您需要超过 100 条消息,您可以翻阅历史记录(此处不涉及)。
- 仅使用
start
参数总是 returns 消息 比提供的 timetoken 更旧。如果您设置 reverse = true
,您将收到比提供的 timetoken 更新 的消息。并且 start
是独占的(带有 timetoken = start
的消息是 NOT 返回)。
- 仅使用
end
参数总是 returns 消息 比提供的时间标记更新。如果您设置 reverse = true
,您将收到比提供的时间令牌 更早 的消息。并且 end
是包容性的(返回带有 timetoken = end
的消息)。
- 当您提供
start
和 end
参数时,将忽略 reverse
参数并使用默认值 false
。这是因为它总是只提供该时间标记范围内的结果。
reverse
参数指示从时间轴的哪一端开始搜索:最旧的消息和向前(从左到右),reverse = true
或最新的消息和向后,reverse = false
(默认值)。
- 如果您使用
reverse = false
调用 history
且没有其他参数(start
、end
、count
),您将得到 最多 100 条最新消息(如果该频道的历史消息少于 100 条,则为 < 100)。这是因为您正在从时间线的最新一端开始搜索历史。
- 如果您使用
reverse = true
调用 history
且没有其他参数(start
、end
、count
),您将得到 最多 100 条最旧的消息(如果该频道的历史消息少于 100 条,则小于 100 条)。这是因为您正在从时间轴最旧的一端开始搜索历史。
查看 Storage And Playback Getting Started Guide 了解更多关于 PubNub history
API 工作原理的信息(带时间线图)。
我的 Pubnub 频道中有二十多条消息。然后我尝试使用
获取最后五条消息let startTimeToken = dateToTimeToken(NSDate(timeIntervalSince1970: 0)) //unix time interval 0
let endTimeToken = dateToTimeToken(NSDate()) // now
self.pubnub?.historyForChannel(room, start: startTimeToken, end: endTimeToken,
limit: 5, reverse: true, includeTimeToken: true, withCompletion: {
(result, status) -> Void in
}
并发现,无论反向参数是真还是假,我总是收到前五条消息,而不是最后一条。
获取最后五条消息的唯一方法是
self.pubnub?.historyForChannel(room, start: endTimeToken, end: nil,
limit: 5, reverse: false, includeTimeToken: true, withCompletion: {
(result, status) -> Void in
}
但这到底是什么? 开始 = 结束,结束 = 零,反向 = 假 你收到最后 5 条消息?
首先我不明白这个逻辑。为什么第一个语句完全忽略反向参数?
PubNub 历史课 ;)
历史 API 一开始可能有点晦涩难懂,但是一旦您了解了它的工作原理,您就可以得到您需要的东西。也就是说,我们 (PubNub) 正在开发一个更强大、更易于使用、功能更丰富的历史记录 API.
您问题的答案
- 当您提供
start
和end
参数时,reverse
参数将被忽略,而是使用默认值,即false
,这意味着获取消息从最新的时间标记(end
参数)开始并及时向后移动,直到检索到 5 条消息(您的count
参数值)。 - 如果你只想要最后5条消息(最新的5条消息),只需将
start
和end
设置为nil
,将count
设置为[=20] =] 和reverse
到false
。如果您想要前 5 条消息(最早的 5 条消息),则将reverse
设置为true
。
PubNub 历史的一些基本规则
如果你能学会以下history
API的规则,你将成为这方面的专家。
- 每次
history
调用最多可返回 100 条消息。您可以使用count
参数指定少于 100 条,但不能指定更多。如果您需要超过 100 条消息,您可以翻阅历史记录(此处不涉及)。 - 仅使用
start
参数总是 returns 消息 比提供的 timetoken 更旧。如果您设置reverse = true
,您将收到比提供的 timetoken 更新 的消息。并且start
是独占的(带有 timetoken =start
的消息是 NOT 返回)。 - 仅使用
end
参数总是 returns 消息 比提供的时间标记更新。如果您设置reverse = true
,您将收到比提供的时间令牌 更早 的消息。并且end
是包容性的(返回带有 timetoken =end
的消息)。 - 当您提供
start
和end
参数时,将忽略reverse
参数并使用默认值false
。这是因为它总是只提供该时间标记范围内的结果。 reverse
参数指示从时间轴的哪一端开始搜索:最旧的消息和向前(从左到右),reverse = true
或最新的消息和向后,reverse = false
(默认值)。- 如果您使用
reverse = false
调用history
且没有其他参数(start
、end
、count
),您将得到 最多 100 条最新消息(如果该频道的历史消息少于 100 条,则为 < 100)。这是因为您正在从时间线的最新一端开始搜索历史。 - 如果您使用
reverse = true
调用history
且没有其他参数(start
、end
、count
),您将得到 最多 100 条最旧的消息(如果该频道的历史消息少于 100 条,则小于 100 条)。这是因为您正在从时间轴最旧的一端开始搜索历史。
查看 Storage And Playback Getting Started Guide 了解更多关于 PubNub history
API 工作原理的信息(带时间线图)。