通过SignalR可以实现服务端和客户端的简单的消息接收发送,类似于推送!而且是免费的!
本章内容是记录SignalR的使用!
最低使用要求:ASP.NET Core 2.2 版本以后(含)
官方文档地址
本文就只介绍Android端如何使用了
1、引入依赖
implementation 'com.microsoft.signalr:signalr:3.0.0-preview8.19405.7'
//signalr日志打印(可选)
//implementation 'org.slf4j:slf4j-jdk14:1.7.25'
文档写的版本还是1.0.0,其实最新已经3.0.0了,推荐使用最新版,因为发现旧版有些无法连接!
查看版本历史
2、建立连接
//url 通信地址(后台给)
HubConnection hubConnection = HubConnectionBuilder.create(url).build();//初始化
hubConnection.start().blockingAwait();//进行连接
3、接收消息(
一定要放在连接操作之前
,也就是 hubConnection.start().blockingAwait()之前),不然无法接受到消息!
/**
* 与服务器交互,接收服务器的消息
* 务必放在连接之前,hubConnection.start().blockingAwait()方法之前,不然无效
* ReceiveMsg 与服务器约定的方法
* String.class 接收的类型,与服务器约定
*/
hubConnection.on("ReceiveMsg", new Action1<String>() {
@Override
public void invoke(String message) {//子线程
//UI操作请切换到主线程,不然会出现不显示等问题
Message msg = new Message();
msg.obj = "接收到服务器消息:" + message;
msg.what = 0x123;
handler.sendMessage(msg);
}
}, String.class);
4、发送消息
/**
* 与服务器交互,给服务器发消息
* SendMsg 与服务器约定的方法
* str1 与服务器约定的字段
*/
hubConnection.send("SendMsg", str1);
//hubConnection.send("SendMsg", str1, str2);//参数个数为不固定
5、断开连接
if (hubConnection != null)
hubConnection.stop();
到这里就结束了,其实就是简单地 连接、发送、接收 等操作!
问题汇总:
1、如果无法连接请尝试升级到最新版本
2、接收到服务器消息后,进行消息处理请务必在UI线程
3、接收消息操作请放在连接操作之前,不然接收方法无效
Demo下载
(百度云盘)
版权声明:本文为a295268305原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。