使用长轮询检索实时通知时是否可能丢失事件?
Is it possible to lose events when using long-polling to retrieve real time notifications?
订阅实时通知时,我经历了正常的握手、订阅、连接流程。
一旦与事件连接 return,我将重新连接并等待对 return 的下一个响应。我的问题是:
如果在第一次响应和下一次重新连接时生成事件,它们会丢失吗?
举个例子:同步应用程序在 returns 之后处理 returned 响应数据,并且仅在数据处理完成后才重新连接,这可能会导致响应与下一个响应之间出现明显的延迟重新连接。在该延迟期间生成的累积事件是否缓冲在该特定客户端 ID 的实时队列中,或者它们只是丢失了?
还有一个可能的例子是当client ID失效了(好像每天半夜都有),我不得不重新订阅,导致一段时间没有人订阅。
握手连接到服务器端队列时收到的客户端 ID。该队列保留所有您无法收到的通知,直到下一次连接。当您重新连接时,它会提供它们。 (使用 Postman 进行尝试:连接后 returns,发送几个事件,然后再次连接。您会注意到您将立即获得所有事件。)
但是,正如您所注意到的,队列不会永久保留。如果您无法在两个小时内重新连接(我相信),队列将被丢弃,以免阻塞服务器资源。这就是你注意到的。在这种情况下,您需要查询数据库以确定是否遗漏了任何事件(例如,从设备中轮询任何处于挂起状态的操作)。
订阅实时通知时,我经历了正常的握手、订阅、连接流程。 一旦与事件连接 return,我将重新连接并等待对 return 的下一个响应。我的问题是: 如果在第一次响应和下一次重新连接时生成事件,它们会丢失吗?
举个例子:同步应用程序在 returns 之后处理 returned 响应数据,并且仅在数据处理完成后才重新连接,这可能会导致响应与下一个响应之间出现明显的延迟重新连接。在该延迟期间生成的累积事件是否缓冲在该特定客户端 ID 的实时队列中,或者它们只是丢失了?
还有一个可能的例子是当client ID失效了(好像每天半夜都有),我不得不重新订阅,导致一段时间没有人订阅。
握手连接到服务器端队列时收到的客户端 ID。该队列保留所有您无法收到的通知,直到下一次连接。当您重新连接时,它会提供它们。 (使用 Postman 进行尝试:连接后 returns,发送几个事件,然后再次连接。您会注意到您将立即获得所有事件。)
但是,正如您所注意到的,队列不会永久保留。如果您无法在两个小时内重新连接(我相信),队列将被丢弃,以免阻塞服务器资源。这就是你注意到的。在这种情况下,您需要查询数据库以确定是否遗漏了任何事件(例如,从设备中轮询任何处于挂起状态的操作)。