Android Signal 使用

news/2024/7/24 6:33:06 标签: android, okhttp

一、官方

文档地址

示例代码

二、使用前说明

一定要注意使用的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 客户端


http://www.niftyadmin.cn/n/272624.html

相关文章

Vue3 Antd 父子嵌套子表格

Vue3 Antd 父子嵌套子表格 父子嵌套子表格 目标1&#xff1a;可以点击多个父节点表格&#xff0c;正确显示子表格数据 目标2&#xff1a;父表格数据刷新重载&#xff0c;解决子表格数据不刷新问题 官方示例代码&#xff0c;以及效果 https://www.antdv.com/components/tabl…

【Android -- 开源库】数据库 Realm 的基本使用

简介 Realm 是一个 MVCC &#xff08;多版本并发控制&#xff09;数据库&#xff0c;由Y Combinator公司在2014年7月发布一款支持运行在手机、平板和可穿戴设备上的嵌入式数据库&#xff0c;目标是取代 SQLite。Realm 本质上是一个嵌入式数据库&#xff0c;他并不是基于 SQLit…

边听歌边充电LDR6028+LDR9201既能充电又能OTG方案

随着type-c接口的普及&#xff0c;市面上的手机&#xff0c;平板&#xff0c;笔电逐渐都采用了type-c接口&#xff0c;设备为了不断的追求更轻薄的机身和防水要求慢慢的取消了一些影响手机外观完整性的接口&#xff0c;比如3.5mm耳机孔。 有线耳机用户一般会选择使用C口转3.5m…

二十三种设计模式第二篇--工厂模式

上篇我们了解了6条设计模式的准则&#xff0c;我相信如果你想了解设计模式&#xff0c;那么你迈出的第一步&#xff0c;我会将上一篇文档里边的6大准则进行一篇有关的代码展示&#xff0c;当然这是题外话了&#xff0c;本篇我们将重点围绕工厂模式进行讲解&#xff0c;天哪&…

OpenGL(一)——初识和搭建

目录 一、前言 二、概述 2.1 光学 2.2 三通道 2.3 上下文Context 2.4 渲染管线 2.5 着色器Shader 2.6 缓冲区和数组 三、安装 四、运行 五、库API 5.1 核心库GL 5.2 实用库GLUT 一、前言 渲染render是用软件从模型生成图像的过程&#xff0c;也表示编辑视频生成想达…

c# 数据保存为PDF(一) (spire pdf篇)

文章目录 前言了解 Spire使用Spire.PDF1 创建简单的PDF文档2 创建带有格式的PDF文档&#xff08;使用Draw&#xff09;头部信息页眉页脚测试数据完整的代码 3 创建带有格式的PDF文档&#xff08;使用Gird&#xff09;小结 先上一个效果图 前言 项目中需要将一些数据转存为PDF …

毕业小白的进阶之路 day1

摆烂的大学生活 学校里学到最多的也就是低阶算法以及python了&#xff0c;操作系统以及其他的就是学了忘压根不会应用。接触到最深的也就是Springboot了。学几年前淘汰的SSM框架真不知道是为了什么。最近临近毕业想要提升下自己&#xff0c;也就get到了Spring Cloud 框架。 S…

从功能测试转型测试开发,薪资涨了20K,1000字讲述转型必经之路...

身处职场之中&#xff0c;犹如逆水行舟不进则退&#xff0c;想要不被后浪拍死在沙滩上&#xff0c;就要不断学习新知识&#xff0c;接受新事物。 要得到更好的发展&#xff0c;就要紧跟发展趋势&#xff0c;不断转型才能保持竞争力&#xff0c;在职场中占有一席之地。 转型不…