Как я могу определить удаленного актера?

У меня есть удаленный субъект (клиент), который регистрируется на другом удаленном субъекте (сервере), а затем отменяет регистрацию (с помощью кнопки завершения работы). Однако, несмотря на то, что сервер забирает отмену регистрации, фактическая 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 для идентификации отправителя.

Другие вопросы по тегам