Android Signal 使用

一、官方

文档地址

示例代码

二、使用前说明

一定要注意使用的Signal 的版本号,如果客户端与服务端的版本不一致,可能会出现收不到消息的问题!!!

三、使用

添加依赖

//signalr
implementation 'com.microsoft.signalr:signalr:7.0.0'
//也可以加入日志,文档中有写
//implementation 'org.slf4j:slf4j-jdk14:1.7.25'

编译没问题,但是运行的时候会报错

//在Android标签下添加这个,因为signalr中包含okhttp3引起的冲突
configurations {
    all*.exclude group: 'com.squareup.okhttp3', module: 'okhttp'
}

解决办法

当然也有说引入library依赖的方法

解决办法1

githup

创建连接

关键类com.microsoft.signalr.HubConnection和com.microsoft.signalr.HubConnectionBuilder

HttpHubConnectionBuilder httpHubConnectionBuilder = HubConnectionBuilder.create(serverUrl你的地址);
      //可以设置其他的参数  
      HubConnection hubConnection = httpHubConnectionBuilder.withTransport(TransportEnum.WEBSOCKETS).build();
        //hubConnection = httpHubConnectionBuilder.build();

接收消息

//与服务器交互,接收服务器的消息
//ReceiveMsg   与服务器约定的方法
//String.class 接收的类型,与服务器约定
//务必放在连接之前,hubConnection.start().blockingAwait()方法之前,不然无效
hubConnection.on("ReceiveXXMessage", new Action1<String>() {
    @Override
    public void invoke(String message) {//子线程
        //UI操作请切换到主线程,不然会出现不显示等问题
    }
}, String.class);

设置关闭连接的监听

//对被动关闭进行监听(比如网络异常)
hubConnection.onClosed(new OnClosedCallback() {
    @Override
    public void invoke(Exception exception) {
        Log.i("zxd", "exception: " + exception.getMessage());
    }
});

开始连接

hubConnection.start().blockingAwait();

关闭连接

 hubConnection.stop()

发送消息

/**
    与服务器交互,给服务器发消息
    SendMsg 与服务器约定的方法
    str1    与服务器约定的字段
*/
hubConnection.send("SendMsg", str1);
//hubConnection.send("SendMsg", str1, str2);//参数个数为不固定

连接的状态

if (hubConnection.getConnectionState() == HubConnectionState.DISCONNECTED) {
    hubConnection.start().blockingAwait();
}

三种状态:

CONNECTED,//已连接
DISCONNECTED,//未连接
CONNECTING,//连接中

参考

SignalR ——Android实践 kt

SignalR ——Android实践

Android 通过SignalR与服务器交互

Android signalr

android封装signalR的demo

.NET CORE SignalR Android 客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值