0

При переносе в Play 2.5 я пытаюсь реализовать новую функциональность WebSocket, как описано here (Обработка WebSockets с участием актеров). В Play 2.5.4 нет play.libs.streams.ActorFlow (как показано в примере), но только play.api.libs.streams.ActorFlow. Но когда я пишу этот код:Play 2.5 ActorFlow: невозможно преобразовать из потока <String, String, capture # 1-of?> В Flow <String, String,?>

public class MyController extends Controller { 
    private final ActorSystem actorSystem; 
    private final Materializer materializer; 

    @Inject 
    public MyController(ActorSystem actorSystem, Materializer materializer) { 
     this.actorSystem = actorSystem; 
     this.materializer = materializer; 
    } 

    public WebSocket socket() { 
     return WebSocket.Text.accept(request -> 
       return ActorFlow.<String, String>actorRef(MyWebSocketActor::props, 256, OverflowStrategy.dropHead(), 
        actorSystem, materializer 
       ) 
     ); 
    } 
} 

Компилятор дает мне ошибку:

Type mismatch: cannot convert from Flow <String,String,capture#1-of ?> to Flow<String,String,?>

Может кто-то пожалуйста, объясните мне, как реализовать этот подход в 2.5? Почему я ошибаюсь?

ответ

0

Я просто попал в ту же проблему с игрой 2.5.12. Проблема заключается в том, что ActorFlow еще не реализована должным образом для Java в Play 2.5.x. (именно поэтому у вас был play.api.libs.streams.ActorFlow со стороны Scala).

Правильный код Java, похоже, находится в игре 2.6.x. https://github.com/playframework/playframework/blob/master/framework/src/play-streams/src/main/java/play/libs/streams/ActorFlow.java

На данный момент, я думаю, простым решением является придерживаться (лишенного) LegacyWebsocket до тех пор, пока 2.6.x не станет стабильным.

(Я знаю, что это старые вопросы, но это по-прежнему актуально).

+0

Спасибо за ответ в любом случае :) Тем не менее, я нашел способ использовать новую реализацию WebSocket в Play 2.5 на основе того, что написано здесь: http://nuah.livejournal.com/315561.html – sleb82

Смежные вопросы