提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近做Android客户端的SignalR推送,服务器是.net core的。按照官方文档连接没有问题,再加入群组这块遇到了一些问题。由于以前没接触过,这几天又赶着上线,所以网上翻遍各种资料,并没找到符合的资料。最终参考javascript版本的加入群组得以解决问题。
提示:以下代码可供参考
一、以官方文档为基础的版本
HubConnection hubConnection;
public void signalr() {
hubConnection = HubConnectionBuilder
.create(url)
.build();
hubConnection.on("Send", (message)-> {
//处理接受到的信息
}, String.class);
new MainActivity.HubConnectionTask().execute(hubConnection);
}
class HubConnectionTask extends AsyncTask<HubConnection, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(HubConnection... hubConnections) {
HubConnection hubConnection = hubConnections[0];
//开始连接
hubConnection.start().blockingAwait();
if(hubConnection.getConnectionState().equals(HubConnectionState.CONNECTED))
//加入群组
hubConnection.invoke(String.class, "群组名字", "参数");
return null;
}
}
二、使用RxJava的版本
HubConnection hubConnection;
public void signalr() {
hubConnection = HubConnectionBuilder
.create(url)
.build();
hubConnection.start().andThen((SingleSource<String>) observer -> {
hubConnection.invoke(String.class, "群组名字", "参数");
hubConnection.on("Send", observer::onSuccess, String.class);
}).subscribeOn(Schedulers.io()).subscribe(new SingleObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(String s) {
//处理接收到的消息
}
@Override
public void onError(Throwable e) {
}
});
}