0
を(WSClientの初期化)を再生する私は今、私が入ってくるのソケットを扱うソケット俳優を持っている公式のプレイから、クライアントクラスを定義2.6ドキュメント、送信するHTTPリクエスト
import javax.inject.Inject;
import play.libs.ws.*;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.concurrent.CompletionStage;
public class MyClient implements WSBodyReadables, WSBodyWritables {
private WSClient ws;
@Inject
public MyClient(WSClient ws) {
this.ws = ws;
sendRequest();
}
public void sendRequest() {
WSRequest request = ws.url("http://example.com");
WSRequest complexRequest = request.addHeader("headerKey", "headerValue")
.setRequestTimeout(Duration.of(1000, ChronoUnit.MILLIS))
.addQueryParameter("paramKey", "paramValue");
CompletionStage<? extends WSResponse> responsePromise = complexRequest.get();
}
}
を撮影した以下のコードを持っていますメッセージ。私は新しいメッセージがソケットを介して来るたびにHTTPリクエストを発射したい。
私の問題は、sendRequestメソッドを使用するようにMyClientクラスを初期化する方法がわかりません。
public void onReceive(Object message) throws Exception {
if (message instanceof String) {
out.tell("I received your message: " + message, self());
MyClient a = new MyClient(); //problem here
}
}
以前は、私のようなので、MyActorをインスタンス化: 'WebSocket.Text.acceptを返す(リクエスト - > ActorFlow.actorRef(MyActor ::小道具、 actorSystem、materializer ) );'もはや機能し ので、どのようにそれはできますか? – john
次に、アクターを作成するときに 'MyClient'オブジェクトを挿入し、' MyActor :: props'を使う代わりに 'Props.create(MyActor.class、THE_INJECTED_INSTANCE_OF_MYCLIENT)'を使用するといいと思います。 – Salem
@john動作しましたか? – Salem