【发布时间】:2016-07-18 16:49:15
【问题描述】:
我正在使用 Java Play 框架。 我正在使用 Web 套接字进行客户端服务器交互。 在服务器端,我们有响应客户端请求的又名演员。 我面临的问题: 我希望,当客户端打开与服务器上的 Hakka 演员的 Web 套接字连接时,它实际上为该演员打开了一个池,然后我需要跟踪该实例的演员客户端路径,以便每当采取其他行动时放置在某个其他类中,该类通知该参与者(使用跟踪的实例路径)该操作已发生,然后该参与者通知用户(客户端)该操作已发生。 我实际上正在使用
String ClientPushActorPath = akka.serialization.Serialization.serializedActorPath(self());
以上内容继续获取该客户端用户实例的路径。 但是下次当我尝试使用这条路径击中这个演员时,我找不到这个演员。 我试图从另一个演员那里打演员的方式是:
PushCacheManager cache = PushCacheManager.getInstance();
cache.load(qiid);
String ActorPath = cache.get("ClientPushActorPath");
ActorSelection ClientPushActor = system.actorSelection(ActorPath);
ClientPushActor.tell(m4, getSelf());
所以上面的代码简单地说,首先我去从缓存中获取 scots 路径(它被缓存在内存中以备将来使用),然后我尝试将该路径传递给演员选择。一旦我得到演员的对象选择我用它来告诉其他演员我需要传递的消息是 m4。 请纠正我哪里出错了。 我无法看到使用此路径的演员。 我觉得,我跟踪路径的方式是错误的。 请纠正我。 比
【问题讨论】:
-
你为什么要打扰
ActorPath?是什么阻止您将ActorRef存储在某处并使用它来发送回复?使用ActorRef是在 Akka 中的惯用方式 -
是否可以存储特定客户端用户实例的参与者引用?对不起,我是 akka 的新手。
-
我的意思是,如果您有 100 个用户同时登录,那么所有这 100 个用户都应该有一个唯一的参与者参考,以后可以使用它来通知这些用户。
-
为每个 websocket 客户端/用户创建一个服务器端参与者。只要你有正确的命名或依赖 Akka 的内部命名(第一种方法是推荐的),应该没有任何问题。而且您所有的
ActorRefs 都将是唯一且可序列化的。 -
能否提供参考链接(如果有)
标签: java playframework playframework-2.0 akka