ASP.NET Core SignalR の Java クライアントASP.NET Core SignalR Java client

によってMikael MengistuBy Mikael Mengistu

Java クライアントでは、Java のコードは、Android アプリを含む、ASP.NET Core SignalR サーバーに接続します。The Java client enables connecting to an ASP.NET Core SignalR server from Java code, including Android apps. ように、 JavaScript クライアント.NET クライアント、Java クライアントでは、リアルタイムでハブにメッセージを送受信することができます。Like the JavaScript client and the .NET client, the Java client enables you to receive and send messages to a hub in real time. Java クライアントとは、ASP.NET Core 2.2 で使用可能な以降です。The Java client is available in ASP.NET Core 2.2 and later.

この記事で参照されているサンプルの Java コンソール アプリでは、SignalR の Java クライアントを使用します。The sample Java console app referenced in this article uses the SignalR Java client.

サンプル コードを表示またはダウンロードします (ダウンロード方法)。View or download sample code (how to download)

SignalR の Java クライアント パッケージをインストールします。Install the SignalR Java client package

Signalr 1.0.0 JAR ファイルは、SignalR ハブに接続するクライアントを使用できます。The signalr-1.0.0 JAR file allows clients to connect to SignalR hubs. JAR ファイルの最新のバージョン番号を検索するには、次を参照してください。、 Maven 検索結果します。To find the latest JAR file version number, see the Maven search results.

Gradle を使用する場合に、次の行を追加、dependenciesのセクション、 build.gradleファイル。If using Gradle, add the following line to the dependencies section of your build.gradle file:

implementation 'com.microsoft.signalr:signalr:1.0.0'

内の次の行を追加して Maven を使用した場合、<dependencies>の要素、 pom.xmlファイル。If using Maven, add the following lines inside the <dependencies> element of your pom.xml file:

<dependency>
    <groupId>com.microsoft.signalr</groupId>
    <artifactId>signalr</artifactId>
    <version>1.0.0</version>
</dependency>

ハブへの接続します。Connect to a hub

確立するために、 HubConnectionHubConnectionBuilder使用する必要があります。To establish a HubConnection, the HubConnectionBuilder should be used. 接続の作成中には、ハブの URL とログ レベルを構成できます。The hub URL and log level can be configured while building a connection. いずれかを呼び出すことによって、必要なオプションを構成、HubConnectionBuilder前にメソッドbuildします。Configure any required options by calling any of the HubConnectionBuilder methods before build. 接続を開始startします。Start the connection with start.

HubConnection hubConnection = HubConnectionBuilder.create(input)
        .build();

クライアントからのハブ メソッドの呼び出しCall hub methods from client

呼び出しsendハブ メソッドを呼び出します。A call to send invokes a hub method. ハブ メソッドの名前およびハブ メソッドで定義されている引数を渡すsendします。Pass the hub method name and any arguments defined in the hub method to send.

hubConnection.send("Send", input);

注意

Azure SignalR サービスを使用している場合サーバーレス モード、クライアントからハブ メソッドを呼び出すことはできません。If you're using Azure SignalR Service in Serverless mode, you cannot call hub methods from a client. 詳細については、次を参照してください。、 SignalR サービスのドキュメントします。For more information, see the SignalR Service documentation.

ハブからのクライアント メソッドを呼び出すCall client methods from hub

使用hubConnection.onハブで呼び出すことができるクライアントでメソッドを定義します。Use hubConnection.on to define methods on the client that the hub can call. 作成した後は、接続を開始する前に、メソッドを定義します。Define the methods after building but before starting the connection.

hubConnection.on("Send", (message) -> {
    System.out.println("New Message: " + message);
}, String.class);

ログ記録を追加します。Add logging

SignalR の Java クライアントを使用して、 SLF4Jのログ記録ライブラリです。The SignalR Java client uses the SLF4J library for logging. ライブラリのユーザーは、特定のログ出力の依存関係に導入することで独自の特定のログ記録の実装を選択できるようにする高度なログ記録 API になります。It's a high-level logging API that allows users of the library to chose their own specific logging implementation by bringing in a specific logging dependency. 次のコード スニペットは、使用する方法を示しますjava.util.loggingSignalR Java クライアントを使用します。The following code snippet shows how to use java.util.logging with the SignalR Java client.

implementation 'org.slf4j:slf4j-jdk14:1.7.25'

依存関係でのログ記録を構成しない場合、SLF4J は、次の警告メッセージが既定の操作なしロガーを読み込みます。If you don't configure logging in your dependencies, SLF4J loads a default no-operation logger with the following warning message:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

これは無視しても。This can safely be ignored.

Android 開発メモAndroid development notes

SignalR クライアントの機能の Android SDK の互換性、に関して、ターゲットの Android SDK のバージョンを指定するときに、次のもの考慮してください。With regards to Android SDK compatibility for the SignalR client features, consider the following items when specifying your target Android SDK version:

ベアラー トークン認証を構成します。Configure bearer token authentication

「アクセス トークン ファクトリを」を提供することで、認証に使用するベアラー トークンを構成する、SignalR の Java クライアントで、 HttpHubConnectionBuilderします。In the SignalR Java client, you can configure a bearer token to use for authentication by providing an "access token factory" to the HttpHubConnectionBuilder. 使用withAccessTokenFactoryを提供する、 RxJava 単一<文字列 >します。Use withAccessTokenFactory to provide an RxJava Single<String>. 呼び出してSingle.deferクライアントのアクセス トークンを生成するロジックを記述することができます。With a call to Single.defer, you can write logic to produce access tokens for your client.

HubConnection hubConnection = HubConnectionBuilder.create("YOUR HUB URL HERE")
    .withAccessTokenProvider(Single.defer(() -> {
        // Your logic here.
        return Single.just("An Access Token");
    })).build();

既知の制限事項Known limitations

  • JSON プロトコルのみがサポートされています。Only the JSON protocol is supported.
  • Websocket トランスポートのみがサポートされています。Only the WebSockets transport is supported.
  • ストリーミングはまだサポートされません。Streaming isn't supported yet.

その他の技術情報Additional resources