使用ReactiveCocoa处理网络和套接字连接



我现在正在学习反应式编程,特别是ReactiveCocoa,我不确定如何处理网络连接和套接字连接。

应用程序:应用程序等待网络连接,然后通过从restful后端获取令牌登录,然后使用该令牌连接到套接字。

我通过链接三个信号来解决这个问题,这三个信号本质上导致应用程序执行一个又一个任务:当有互联网时->获取令牌->当有令牌时->连接套接字现在,如果我失去了网络连接,并在某个时候重新获得它,这个过程将从头开始并重新连接套接字。

问题即使网络连接保持稳定(这种情况经常发生),如果套接字断开怎么办?只有当网络连接丢失并再次获得时,链才会重新启动。因此,当套接字断开连接时,它应该尝试再次连接,但前提是有网络连接。

如何使用ReactiveCocoa或一般的反应式编程来实现这些依赖关系?

我不知道这将如何在Reactive Cocoa中实现,但我的即兴解决方案是加入第一个也是最后一个单元:

  • 当有互联网而没有插座时:获取令牌->连接

这样,当"互联网存在"条件变为true时,进程开始,当"套接字存在"条件变成false时,进程也开始。

例如,在像钠(Java)这样的东西中,你可能会使用这样的细胞:

Cell< Boolean > hasInternet;
Cell< Socket > socket;
Cell< Boolean > shouldGetToken = Cell.lift( 
    (hi, s) -> hi && socket == null, hasInternet, socket );

最新更新