Android 通过SignalR与服务器交互

  • Post author:
  • Post category:其他


通过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 版权协议,转载请附上原文出处链接和本声明。