Android java 客户端需要连接服务器SignalR之前需要build.gradle(Module:app)引用(查找最新的 JAR 文件版本号):
/*Java SignaLR客户端*/
implementation 'com.microsoft.signalr:signalr:3.1.6'
创建连接(可以写在设置的Application里):
HubConnection hubConnection = HubConnectionBuilder.create("http://服务器地址/SignalR地址").build();
new Thread(){
public void run() {
hubConnection.start().blockingAwait(6000*10,TimeUnit.MILLISECONDS);//启动链接,设置超时6000*10,毫秒级;会有阻塞所以开线程
//连接关闭回调
hubConnection.onClosed(new OnClosedCallback() {
@Override
public void invoke(Exception exception) {
System.out.println("连接关闭了!!!!!!!!!");
}
});
};
}.start();
接收消息:
void setOnSignalr(){
//实时接收Signalr消息
hubConnection.on("ReceiveMessage", (user, message) -> {
System.out.println(user+":"+message);
if (user=="UserConnectionID"){
setUserConnectionID(message);
}
}, String.class,String.class);
hubConnection.on("GetClientCount",(count)->{
System.out.println("连接人数:"+count.toString());
},Long.class);
}
第一个参数为C#服务端:
发送消息:
hubConnection.send("AddClient",loginUser);//第一个参数:c#服务端的方法,第二参数为方法的参数
对应:
App:
打算在app登陆账号成功后发送一些信息,然后记录登陆的用户完成显示再线人数;
打开之前的服务端Signalr的web页面、运行app
输入内容调试:
Android Java 客户端:
退出App后会断开连接,服务端也会输出内容和在缓存中移除登录信息: