Wie kann ich einen Remote-Schauspieler identifizieren?
-
21-08-2019 - |
Frage
Ich habe einen Remote-Schauspieler (Client), die mit einem anderen Remote-Akteure (Server) registriert und dann später Deregistrierung (mit einem Shutdown-Hook). Doch obwohl der Server nimmt die Deregistrierung, die tatsächliche sender
Eigenschaft ist ein verschiedene Channel-Objekt ; so in meinem Server-Logs habe ich:
Registered new client [scala.actors.Channel@158e282]; supporting 1 clients
De-registered client [scala.actors.Channel@1caf0b6]; supporting 1 clients
Wie kann ich (auf der Serverseite) bestimmen, dass dies der gleiche Client-Schauspieler war, der mit mir ursprünglich registriert? Offensichtlich konnte ich jeden Kunden mit seinen eigenen UUID
tränken aber ich frage mich, ob es einen einfacheren Weg?
Lösung
Von einer Diskussion auf der Mailingliste scala Benutzer, so scheint es, dass dies ohne eine alternative Art von Client-ID (wie UUID
) nicht sofort möglich ist. Wenn Sie die self
Referenz vom Client in Ihrer Registrierung Objekt senden, erhalten Sie einen ObjectNotSerializable
Fehler.
Andere Tipps
Explizit den Absender zu Ihrer Nachricht hinzuzufügen. Verwenden Sie RemoteActor.select einen scala.actors.remote.Proxy zu bekommen. Verwenden Sie seine Methode toString den Absender zu identifizieren.