作者: Mikael Mengistu
Java 客户端允许从 Java 代码(包括 Android 应用)连接到 ASP.NET Core SignalR 服务器。 与JavaScript 客户端和.net 客户端一样,Java 客户端允许您实时接收消息并向中心发送消息。 Java 客户端在 ASP.NET Core 2.2 及更高版本中可用。
本文中引用的示例 Java 控制台应用使用 SignalR Java 客户端。
Signalr-1.0.0 JAR 文件允许客户端连接到 SignalR 集线器。 若要查找最新的 JAR 文件版本号,请参阅Maven 搜索结果。
如果使用的是 Gradle,请将以下行添加到Gradle文件的 dependencies
部分:
implementation 'com.microsoft.signalr:signalr:1.0.0'
如果使用的是 Maven,请在pom .xml文件的 <dependencies>
元素中添加以下行:
<dependency> <groupId>com.microsoft.signalr</groupId> <artifactId>signalr</artifactId> <version>1.0.0</version> </dependency>
若要建立 HubConnection
,应使用 HubConnectionBuilder
。 在建立连接时,可以配置中心 URL 和日志级别。 在 build
之前调用 HubConnectionBuilder
方法,配置任何必需的选项。 开始与 start
的连接。
HubConnection hubConnection = HubConnectionBuilder.create(input) .build();
调用 send
调用集线器方法。 将 hub 方法名称和在 hub 方法中定义的所有参数传递到 send
。
hubConnection.send("Send", input);
备注
如果在无服务器模式下使用 Azure SignalR 服务,则无法从客户端调用集线器方法。 有关详细信息,请参阅SignalR 服务文档。
使用 hubConnection.on
可在客户端上定义中心可调用的方法。 在生成之后但在开始连接之前定义方法。
hubConnection.on("Send", (message) -> { System.out.println("New Message: " + message); }, String.class);
SignalR Java 客户端使用SLF4J库进行日志记录。 这是一个高级日志记录 API,它允许库的用户通过引入特定的日志记录依赖项来选择自己的特定日志记录实现。 下面的代码段演示如何将 java.util.logging
与 SignalR Java 客户端一起使用。
implementation 'org.slf4j:slf4j-jdk14:1.7.25'
如果未在依赖项中配置日志记录,SLF4J 将加载默认的非操作记录器,并提供以下警告消息:
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.
可以安全地忽略此情况。
与 Android SDK SignalR 客户端功能的兼容性相关,在指定目标 Android SDK 版本时,请考虑以下各项:
在 SignalR Java 客户端中,可以通过向HttpHubConnectionBuilder提供 "访问令牌工厂" 来配置用于身份验证的持有者令牌。 使用withAccessTokenFactory提供RxJava 单一<字符串 >。 如果调用了单延迟,你可以编写逻辑来为客户端生成访问令牌。
HubConnection hubConnection = HubConnectionBuilder.create("YOUR HUB URL HERE") .withAccessTokenProvider(Single.defer(() -> { // Your logic here. return Single.just("An Access Token"); })).build();