Android Akka远程处理是否支持单向连接?
我有一个运行在Android设备上的Akka系统,它通过Akka远程处理与服务器上的Akka系统进行通信 Android设备可能会获得任何IP地址,在应用程序运行时IP可能会更改,并且无法从服务器访问IP。因此,我在Android设备上配置了Akka,使用Android Akka远程处理是否支持单向连接?,android,networking,client-server,netty,akka,Android,Networking,Client Server,Netty,Akka,我有一个运行在Android设备上的Akka系统,它通过Akka远程处理与服务器上的Akka系统进行通信 Android设备可能会获得任何IP地址,在应用程序运行时IP可能会更改,并且无法从服务器访问IP。因此,我在Android设备上配置了Akka,使用Akka.remote.netty.hostname=“0.0.0.0”和Akka.remote.netty.port=8000 Android Akka系统获取对服务器上某个参与者的引用,向其发送消息,服务器上的参与者记录sender()ac
Akka.remote.netty.hostname=“0.0.0.0”
和Akka.remote.netty.port=8000
Android Akka系统获取对服务器上某个参与者的引用,向其发送消息,服务器上的参与者记录sender()actorRef并不断向其发送消息。当服务器和安卓设备都在同一个wlan上,并且通过GPRS在互联网上通话时,这一功能就可以发挥作用
现在,我将更仔细地了解连接丢失和重新连接。我一直关注的场景是:
- Android设备和服务器都位于wlan上
- Android设备向服务器发送消息
- Android上的Akka远程处理产生
RemoteClientStarted
- 服务器上的Akka远程处理产生
和RemoteClientStarted
RemoteServerClientConnected
- 然后我关掉Android上的wlan,等几秒钟再打开。其间未尝试向服务器发送任何消息
- Android上的Akka远程处理产生
和RemoteClientShutdown
(ETIMEDOUT)RemoteClientError
- 服务器上的Akka远程处理什么也没说
- Android向服务器发送消息
- 服务器生成
并接收消息RemoteServerClientConnected
- 服务器尝试向Android发送一条消息(以下问题称之为a),并生成:
,RemoteServerError
,RemoteServerClientDisconnected
,RemoteClientShutdown
RemoteServerClientClosed
- Android从未从服务器获取消息
- 服务器试图发送另一条消息,但Akkas
说:RemoteClient
- [PassiveRemoteClient@akka://xxx@0.0.0.0:8000]已关闭
- 正在启动到的远程客户端连接[akka://xxx@0.0.0.0:8000 |/0.0.0.0]
- RemoteClientError@akka://vts@0.0.0.0:8000:错误[
ActiveRemoteClient
,而不是重用现有的PassiveRemoteClient
。我猜这同样是因为服务器在看到错误/断开连接/关闭/客户端关闭之前观察RemoteServerClientConnected事件
现在问题是:
被动远程客户端
)- Android:15(4.0.3)
- 阿克卡:2.1
- Java:1.6 64位
- Scala:2.10.1
- 内蒂:3.5.8
应该是位置透明的,这意味着无论您在哪里使用它们,它们的工作原理都是相同的,因此每个节点都需要能够连接到给定参考点所在的节点ActorRefs
- Akka节点之间的通信基本上是对称的,即使您对它的使用可能不是对称的
- 传递
作为进行对话的手段,意味着通过引用指向的实体需要保持可用,否则通信将失败;保持可用意味着“在引用指向的相同位置”ActorRef
长话短说:您的用例不是一个由简单的Akka即时远程处理支持的用例。感谢您的全面回答,特别是关于如何使其工作的建议。快速跟进:
RemoteTransport
似乎是在Akka下实现自己远程处理的基础。它没有文档记录,所以我不得不问:这是推荐方式?在即将发布的Akka版本中,该机制是否会发生重大变化?RemoteTransport将在2.2版本中发生变化,虽然可以想象特殊应用程序会创建自己的应用程序,但我们不希望经常发生这种情况。有许多与参与者消息相关的假设可能与您的需求不符。好吧,我想我会继续y来自RemoteTransport
然后。出于好奇:我最终测试了akka zeromq。它是根据zeromq-2.1构建的,这对我来说是不可接受的。所以我测试了jeromq,它应该是zeromq3的纯java端口。不幸的是,这并不能替代t