Как получить доступ к актеру, созданному в веб-сокете?

У меня есть веб-сокет, созданный с помощью функции актера веб-сокета play 2.3. Как я могу получить доступ к актеру, созданному для отправки сообщений в другой функции?

def websocket: WebSocket[JsValue, JsValue] = 
  WebSocket.acceptWithActor[JsValue, JsValue] {
    req => out => Props(new MyActor(out))
  }

person ferk86    schedule 15.06.2014    source источник


Ответы (1)


Дайте вашему актеру ссылку на менеджера:

def websocket: WebSocket[JsValue, JsValue] = 
  WebSocket.acceptWithActor[JsValue, JsValue] {
    req => out => Props(new MyActor(managerRef, out))
  }

И зарегистрируйте своего актера у своего менеджера в preStart.

person Isammoc    schedule 21.06.2014
comment
Не могли бы вы немного расширить это, пожалуйста. Что вы подразумеваете под регистрацией и что происходит, когда этот WebSocket закрывается? Как менеджер узнает о смерти актера, которым он управляет? Извините, если я пропустил что-то очевидное здесь, я новичок в Akka - person Russell; 29.07.2014
comment
зарегистрируйтесь => в preStart, отправьте сообщение своему менеджеру, менеджер может делать что угодно (сохранять отправителя в наборе, например) Когда WebSocket закрывается, экземпляр MyActor уничтожается (с помощью Play) Менеджер может watch (методом в ActorContext) ваш экземпляр MyActor при его регистрации. - person Isammoc; 29.07.2014