规避 erizet/SignalA 使用中JsonString =null 报错的问题

SignalA推送服务源码 代码是2013-10-26的代码,如后官网有更新,请自行休息最新的代码 立即下载

由于项目需求,跟.Net服务器有长链接,最终选择用SignalA来做,在Github上找了一圈,最终选用 https://github.com/erizet/SignalA 集成到自己的项目里。

在集成SignalA项目过程中, 使用创建一个Service来开启SignalA服务,但是出现了一个问题,当网络空闲的时候,Json字符串为null的时候,没有补获string = null 的异常。去GitHub上issue上查看,也有遇到这个问题。坑爹的是,代码已经提交修复了这个Bug,但是作者没有更新版本。

两个解决方案:

1.将源码clone下来,自己改,再放到自己的工程,不直接使用依赖。

2.就是我采用的方案,为了不集成源码,我写了一个工具类SignalAUtils。在使用的时候才去调用,不用的时候就断开连接

上源码:

SignalAUtils.hubConnection = new HubConnection(SignalAUtils.getHubUrl(),MeasurePointActivity.this,new LongPollingTransport()){
    @Override
    public void OnError(Exception exception) {
        Log.v("","");
    }

    @Override
    public void OnMessage(String message){
        Log.v("","");
    }

    @Override
    public void OnStateChanged(StateBase oldState, StateBase newState) {
        switch (newState.getState()) {
            case Disconnected:
                break;
            case Connecting:
                break;
            case Connected:{
                // 调用方法
                DHParseUtils.setId(1);
                DHParseUtils.sendTrendData(mListDatas);
                DHParseUtils.DealNetData();
                ReceiveData();
            }
            break;
            case Reconnecting:
                Log.v("","");
                break;
            case Disconnecting:
                Log.v("","");
                break;
        }
    }


};

SignalAUtils.init();
SignalAUtils.Connect();
当你不用的时候调用

SignalAUtils.DisConnect();
下面是SignalAUtils的源码
public class SignalAUtils {

    private final static String TAG = SignalAService.class.getSimpleName();;
    private static String HUB_URL = DHURLUtils.GetRendAtlasUrl();
    private static Context mContext ;
    public  static HubConnection hubConnection = null;
    /*
   * hub代理 panderman 2013-10-25
   */
    public static IHubProxy hub = null;

    /**
     * 开启推送服务 panderman 2013-10-25
     */
    public static void init() {
        try {
            //服务器端的HUB为ChatHub
            hub = hubConnection.CreateHubProxy("GraphRealDataHub");
        } catch (OperationApplicationException e) {
            e.printStackTrace();
        }
    }

    // 连接
    public static void Connect(){
        if (hubConnection == null)
            return;
        hubConnection.Start();
    }

    // 断开连接
    public static void DisConnect(){
        if (hubConnection == null)
            return;
        hubConnection.Stop();
        hubConnection = null;
    }

    public static void postParams(String params,String methodName){
        if (hub == null)
            return;

        List<String> paramsList = new ArrayList<>();
        paramsList.add(params);
        hub.Invoke(methodName,paramsList, new HubInvokeCallback() {
            @Override
            public void OnResult(boolean succeeded, String response) {
                Log.v(TAG, response);
            }

            @Override
            public void OnError(Exception ex) {
                Log.v(TAG,"error");
            }
        });
    }

    public static String getHubUrl() {
        return HUB_URL;
    }

    public static void setHubUrl(String hubUrl) {
        HUB_URL = hubUrl;
    }

    public static Context getmContext() {
        return mContext;
    }

    public static void setmContext(Context mContext) {
        SignalAUtils.mContext = mContext;
    }
}
经过测试,可以暂时规避问题,但是治标不治本啊!
SignalR+android demo源码 1.服务端代码为SignalR demo(https://github.com/SignalR/SignalR) 2.Android端源码为SignalA(https://codeload.github.com/erizet/SignalA/zip/master) 立即下载

相关推荐

signalR实现与服务器进行实时通信的jar

signalR实现与服务器进行实时通信的jar,里面有gson-2.2.2.jar,signalr-client-sdk.jar,signalr-client-sdk-android.jar

JSON.toJSONString的坑有些字段没有了

1.问题 在使用fastjson中的JSON.toJSONString方法将对象转换成json字符串的时候,发现有些字段没有了。如: 1 2 3 4 5 6 7 8 publicstaticvoidmain(String[] args) { Map<String,Object>map=newHashMap<>(); map.put("id"...

万事俱备,就差一个程序员了 7095

使用SignalR推送服务在Android的实现 SignalA

SignalA是老外写的用于实现.net端推送消息至安卓端的实现,支持版本为android 2.3或以上

为什么我不建议你用去 “ ! = null " 做判空?

点击上方好好学java,选择星标公众号重磅资讯、干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架个人原创100W+访问量博客:点击前往,查看更多 转自:优快云...

好好学java 598

Android端SignalR.jar包

移动端开发Android实现sigalr推送机制

Windows 11 的C盘User(用户)文件夹下的用户文件夹名称的修改

背景介绍:由于系统重装导致Windows 11的系统用户名与C盘User(用户)文件夹下的用户名文件夹(公用文件夹旁边的文件夹)出现名称不一致,事例中系统用户名命名为“寂萧”,User(用户)文件夹下的文件夹名称却是“77555”。【QQ邮箱前五位真的真的看着很别扭】注:改名有风险,三思而后行。User(用户)文件夹下的用户名是中文在某些软件的应用场景下产生不便,导致很多软件莫名其妙报错,甚至无法使用,笔者不建议修改为中文名。//和笔者一样的强迫症除外//

2302_79084172的博客 10万+

SignalR 实时通讯

SignalR 是一个开放源代码库,可用于简化向应用添加实时 Web 功能。实时 Web 功能使服务器端代码能够将内容推送到客户端。SignalR 提供用于创建服务器到客户端远程过程调用 (RPC) 的 API。RPC 从服务器端 .NET Core 代码调用客户端上的函数。提供多个受支持的平台,其中每个平台都有各自的客户端 SDK。与 ASP.NET 的其余部分一样,SignalR 是为实现高性能而构建的,也是市面上最快的实时框架之一。

视觉软件 2131

深入解析CAN2.0A与CAN2.0B协议:帧格式与通信机制对比

本文深入对比了CAN2.0A与CAN2.0B协议的核心差异,重点解析了11位标准帧与29位扩展帧的帧格式、标识符长度及通信机制。文章阐述了CAN2.0B向下兼容的特性,并探讨了在汽车电子、工业控制等复杂网络中,如何根据项目需求、兼容性及实时性要求,在标准帧与扩展帧之间做出合理选择。

weixin_29163797的博客 395

vue 如何用signalR与后端对接实现通信

1、:安装 npm install @aspnet/signalr 2、在signalR.js中封装signalR方法 import bus from "./bus.js" const signalR = require("@aspnet/signalr"); let connection = null; export let connectServer = (url, createUserDto) => { connection = new signalR.HubConne

川上饺子的博客 1903

飞控算法-姿态解算之互补滤波

飞控乱入之姿态解算 姿态解算是通过读取各个传感器的数据进行融合最终得到当前飞行器的姿态,姿态通常用Euler角(Roll-Pitch-Yaw)来表示 姿态解算框架 姿态解算的数据源可来自于陀螺仪或加速度计,他们分别都可以得到当前姿态,但实际上他们都有各自的传感器性能的优缺点,需要取长补短,进行数据融合才能得到真实的姿态,这种方法简称 互补滤波 算法 传感器特性 互补滤波 姿态解...

GoolyOh的专栏 1万+

FineReport SQL查询分页

打开模板>模板web属性>分页预览设置,选择为该模板单独设置,将默认的工具栏按钮全部清除掉,然后依次添加两个自定义按钮,一个邮件按钮,两个自定义按钮,一个Word格式,一个PDF按钮。如下所示:注:使用具体格式按钮,如邮件、Word格式、PDF按钮是为了JS直接使用控件名称获取空间方便修改其内容;

lep的博客 2431

SignalR详解

一、什么是SingalR?   SingalR是一种能够让客户端和服务端实时通信,服务端可以主动推送消息到客户端的技术。以往的十几年里,客户端要想实时与服务器通信,只有通过长轮询和AJAX,服务器永远是被动的。 二、SingalR是怎么实现的?   首先SignalR提供客户端和服务端之间的持久连接,其次在SignalR中,服务端代码使用远程过程调用(RPC)调用浏览器中的客户端代码,而不是请求-...

青萍之末的博客 4958

学Simulink--进阶电机控制场景实例:基于Simulink的异步电机定子磁链定向控制(SFOC)仿真

本文详细介绍了基于Simulink的异步电机定子磁链定向控制(SFOC)仿真实现方法。主要内容包括:1) SFOC原理分析,突出其对转子参数不敏感的优势;2) 工业风机驱动系统的完整建模流程,涵盖主电路搭建、坐标变换、磁链观测器设计等关键步骤;3) 核心模块代码实现,包括电压模型磁链观测器和双闭环PI控制器;4) 仿真结果验证了SFOC在转速响应(0.2s)、转矩恢复(0.15s)和参数鲁棒性(转子电阻变化50%时转速波动<2%)方面的优异性能。本文为工程师提供了实用的SFOC系统开发指南,特别适用于

amy_mhd的博客 117

SignalR实时通讯

我这里使用signalr的动机是因为有些大屏数据和设备信息需要自动更新,当时我是使用的轮询的方式,当时轮询周所周知,再数据没有变化的情况下,是非常耗费资源的。闲暇的时候,更是不能使用轮询来造成额外的耗费。signalR 是一个开源的库,跨平台;可以让web应用与其他应用通讯变得非常简单,WEB服务端可以实时的将内容推送给对应的客户端,客户端发送的信息也可以实时到其他客户端。

Admans的专栏 1468

基于学术研究风云卫星数据下载教程

目录 一、相关网址 1.登录注册网址:国家卫星气象中心 2.风云数据服务客户端下载网址 3.风云卫星遥感数据服务网址 二、下载数据步骤 1.首先在注册登录网址,注册一个账户 2.待账户审核后,登录账户即可搜索并下载数据 三、相关工具下载 1.登录风云卫星遥感数据服务网址 2.NCSA HDFView软件 3.风云卫星数据(L1)处理软件包(FENGYUN Toolkit v1.1) 4.静止卫星云图分区图显示软件(SECView) 5.风云二号静止气象卫星数据及产品处理..

珞瑜的博客 1万+

【实战】小红书笔记爬虫终极指南:模拟滑动加载,抓取图文(2026最新版)

小红书作为国内最大的生活方式分享社区,每天产生海量的图文笔记。对于数据分析、市场调研、竞品分析等需求,爬取小红书公开笔记成为一项常见任务。然而,小红书的反爬机制日益升级——接口加密、动态Token、滑动验证、设备指纹……本文将深入剖析小红书Web端和App端的爬取技术,手把手教你用Python实现模拟滑动加载、自动抓取图文笔记的完整爬虫系统。全文包含大量代码、原理分析和排坑经验,适合有一定爬虫基础的读者进阶学习。目录前言一、小红书反爬机制概览二、环境准备2.1 Python环境2.2 浏览器驱动。

2201_76125261的博客 772

SignalR推送服务在Android的实现 SignalA

SignalA是老外写的用于实现.net服务器至安卓端的实现,支持版本为android 2.3或以上,由于我的版本最低是2.2,所以只有把源码下下来自己改,如果你觉得太多了可自己编译成jar引用,本来不才,对java不是很熟悉,如果此版本中有错误还请大家指出来,此图显示的是安卓2.2与4.0的版本。 chat_hub代码: <LinearLayout xmlns:andr

panderman的专栏 2万+

逻辑电平(TTL/CMOS/LVDS/LVPECL/CML)

逻辑电平介绍 TTL------晶体管-晶体管逻辑门(Transistor-Transistor Logic gate) TTL采用5V电源

sinat_15677011的博客 2万+

SignalR中的重连机制和心跳监测机制详解

signalR中重连机制和心跳监测

qq_15058285的博客 3222

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C#项目集成SignalR

1、什么是SugnalR? ASP. NET Signal是为ASP.NET开发人员提供的一个库,可以简化开发人员将实时Web功能添加到应用程序的过程。实时Web功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。 我个人的理解是:当客户端向服务器端发起一次请求,建立连接之后,当服务器端数据发生了变化...

DoWhatYouSay的博客 3726

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机网络 --- WebSocket协议

HTTP是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,是半双工通信。通常,打开某个网页,我们每点击一次网页上的某个选项,前端就会发送一次HTTP请求,网站返回一次HTTP响应。这种由客户端主动请求,服务器响应的方式满足大部分网页的功能场景。但这种情况下,服务器不会主动给客户端发消息。而类似网页游戏这样的场景,是需要客户端和服务器之间互相主动发大量数据的。因此,我们需要一个基于TCP的新协议,即新的应用层协议WebSocket。

HelloWorld 2024

android(SignalA)接收.net(SignalR)推送过来的消息

从网络上搜索到的Demo,自己进行了稍微的改动 Signala类库从https://github.com/erizet/SignalA获得,不过相关引用有错误,需要手动修正。 package com.zsoft.SignalADemo; import android.app.Activity; import org.json.JSONArray; import com.zsoft.sig

让我们一起异想天开 7412

signalr实时通讯

前言 我这里使用signalr 的动机是因为有些大屏数据和设备信息需要自动更新,当时我是使用的轮询的方式,当时轮询周所周知,再数据没有变化的情况下,是非常耗费资源的。闲暇的时候,更是不能使用轮询来造成额外的耗费。 正文 使用场景 使用SignalR与Asp.net Core通讯 1、signalR简介 signalR 是一个开源的库,跨平台;可以让web应用与其他应用通讯变得非常简单,WEB服务端可以实时的将内容推送给对应的客户端,客户端发送的信息也可以实时到其他客户端。 signalR 提供了一种

freeherotoday的博客 1万+

SignalA iOS端,Android端地址

iOS端:https://github.com/DyKnow/SignalR-ObjCAndroid端:https://github.com/erizet/SignalA

Code_Alone的博客 1895
上一篇: SignalA iOS端,Android端地址
下一篇: APP版本号命名规范及原则
Code_Alone
博客等级 码龄9年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值