Как я могу определить удаленного актера?
У меня есть удаленный субъект (клиент), который регистрируется на другом удаленном субъекте (сервере), а затем отменяет регистрацию (с помощью кнопки завершения работы). Однако, несмотря на то, что сервер забирает отмену регистрации, фактическая sender
свойство - это другой объект Channel; так что в журналах моего сервера у меня есть:
Registered new client [scala.actors.Channel@158e282]; supporting 1 clients
De-registered client [scala.actors.Channel@1caf0b6]; supporting 1 clients
Как я могу определить (на стороне сервера), что это был тот же клиентский актер, который первоначально был зарегистрирован у меня? Очевидно, я мог бы наполнить каждого клиента своим UUID
но мне интересно, есть ли более простой способ?
2 ответа
Из обсуждения в списке рассылки пользователей Scala, кажется, что это невозможно сразу без использования какого-либо альтернативного идентификатора клиента (например, UUID
). Если вы отправите self
Ссылка от клиента в вашем объекте регистрации, вы получите ObjectNotSerializable
ошибка.
Явно добавьте отправителя в ваше сообщение. Используйте RemoteActor.select, чтобы получить scala.actors.remote.Proxy. Используйте его метод toString для идентификации отправителя.