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

У меня есть удаленный субъект (клиент), который регистрируется с другим удаленным субъектом (сервером), а затем отменяет регистрацию (с помощью крючка выключения). Однако, хотя сервер принимает отмену регистрации, фактическое свойство sender является другим объектом Channel; поэтому в моих журналах сервера у меня есть:

Registered new client [scala.actors.Channel@158e282]; supporting 1 clients
De-registered client [scala.actors.Channel@1caf0b6]; supporting 1 clients

Как я могу определить (на стороне сервера), что это был тот же клиентский субъект, который изначально зарегистрировался у меня? Очевидно, я мог бы наполнить каждого клиента своим UUID, но мне интересно, есть ли более простой способ?


person oxbow_lakes    schedule 29.06.2009    source источник


Ответы (2)


Из обсуждения в списке рассылки пользователей scala кажется, что это невозможно сразу же без использования какого-либо альтернативного идентификатора клиента (например, UUID). Если вы отправите self ссылку от клиента в своем объекте регистрации, вы получите ObjectNotSerializable ошибку.

person oxbow_lakes    schedule 30.06.2009

Явно добавьте отправителя в свое сообщение. Используйте RemoteActor.select, чтобы получить scala.actors.remote.Proxy. Используйте его метод toString, чтобы идентифицировать отправителя.

person Stefan K.    schedule 15.07.2010