0

订阅实时通知时,我会通过正常的握手、订阅、连接流程。一旦连接返回事件,我重新连接并等待下一个响应返回。我的问题是: 如果在第一个响应和下一次重新连接时生成事件,它们会丢失吗?

例如:一个同步应用程序在返回后处理返回的响应数据,并且只有在数据处理完成后才重新连接,这可能会导致响应和下一次重新连接之间的显着延迟。在该延迟期间生成的累积事件是否缓冲在该特定客户端 ID 的实时队列中,或者它们只是丢失了?

另一个可能的例子是当客户端 ID 不再有效时(这似乎每天午夜都会发生),我必须重新订阅,导致一段时间没有人订阅。

4

1 回答 1

0

握手时收到的客户端 ID 连接到服务器端的队列。该队列保留您在下一次连接之前无法接收的所有通知。当您重新连接时,它会提供它们。(用 Postman 试试:连接返回后,发送几个事件,然后再次连接。您会注意到您将立即获得所有事件。)

但是,正如您所注意到的,队列不会永远保留。如果您无法在两个小时内重新连接(我相信),则队列将被丢弃,以免阻塞服务器资源。这就是你注意到的。在这种情况下,您需要查询数据库以确定任何错过的事件(例如,从设备轮询处于挂起状态的任何操作)。

于 2016-03-08T14:14:15.317 回答