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

chat_hub代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <EditText
  7. android:id="@+id/chat_text"
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent"
  10. android:layout_margin="20dp"
  11. android:gravity="top"
  12. android:inputType="textMultiLine"
  13. android:text="" />
  14. </LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/chat_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:gravity="top"
android:inputType="textMultiLine"
android:text="" /> </LinearLayout>

ChatHub.java代码:

  1. package com.loan.zhironghuimobile;
  2. import org.json.JSONArray;
  3. import com.zsoft.SignalA.Hubs.HubConnection;
  4. import com.zsoft.SignalA.Hubs.HubOnDataCallback;
  5. import com.zsoft.SignalA.Hubs.IHubProxy;
  6. import com.zsoft.SignalA.Transport.StateBase;
  7. import com.zsoft.SignalA.Transport.Longpolling.LongPollingTransport;
  8. import android.app.Activity;
  9. import android.content.OperationApplicationException;
  10. import android.os.Bundle;
  11. import android.widget.EditText;
  12. public class ChatHub extends Activity {
  13. private final static String HUB_URL="http://192.168.1.200:82/signalr/hubs";
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. // TODO Auto-generated method stub
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.chat_hub);
  19. beginConnect();
  20. }
  21. /**
  22. * hub链接
  23. */
  24. private HubConnection conn=new HubConnection(HUB_URL, this, new LongPollingTransport()) {
  25. @Override
  26. public void OnError(Exception exception) {
  27. }
  28. @Override
  29. public void OnMessage(String message) {
  30. }
  31. @Override
  32. public void OnStateChanged(StateBase oldState, StateBase newState) {
  33. }
  34. };
  35. /**
  36. * hub代理 panderman 2013-10-25
  37. */
  38. private IHubProxy hub = null;
  39. /**
  40. * 开启推送服务 panderman 2013-10-25
  41. */
  42. private void beginConnect(){
  43. try {
  44. hub=conn.CreateHubProxy("ChatHub");
  45. } catch (OperationApplicationException e) {
  46. e.printStackTrace();
  47. }
  48. hub.On("addNewMessageToPage", new HubOnDataCallback()
  49. {
  50. @Override
  51. public void OnReceived(JSONArray args) {
  52. EditText chatText=(EditText)findViewById(R.id.chat_text);
  53. //chatText.setText(args.toString());
  54. for(int i=0; i<args.length(); i++)
  55. {
  56. chatText.append(args.opt(i).toString());
  57. }
  58. }
  59. });
  60. conn.Start();
  61. }
  62. }
package com.loan.zhironghuimobile;

import org.json.JSONArray;

import com.zsoft.SignalA.Hubs.HubConnection;
import com.zsoft.SignalA.Hubs.HubOnDataCallback;
import com.zsoft.SignalA.Hubs.IHubProxy;
import com.zsoft.SignalA.Transport.StateBase;
import com.zsoft.SignalA.Transport.Longpolling.LongPollingTransport; import android.app.Activity;
import android.content.OperationApplicationException;
import android.os.Bundle;
import android.widget.EditText; public class ChatHub extends Activity { private final static String HUB_URL="http://192.168.1.200:82/signalr/hubs";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.chat_hub);
beginConnect();
}
/**
* hub链接
*/
private HubConnection conn=new HubConnection(HUB_URL, this, new LongPollingTransport()) {
@Override
public void OnError(Exception exception) {
}
@Override
public void OnMessage(String message) {
}
@Override
public void OnStateChanged(StateBase oldState, StateBase newState) {
}
};
/**
* hub代理 panderman 2013-10-25
*/
private IHubProxy hub = null;
/**
* 开启推送服务 panderman 2013-10-25
*/
private void beginConnect(){
try {
hub=conn.CreateHubProxy("ChatHub");
} catch (OperationApplicationException e) {
e.printStackTrace();
}
hub.On("addNewMessageToPage", new HubOnDataCallback()
{
@Override
public void OnReceived(JSONArray args) {
EditText chatText=(EditText)findViewById(R.id.chat_text);
//chatText.setText(args.toString());
for(int i=0; i<args.length(); i++)
{
chatText.append(args.opt(i).toString());
}
}
});
conn.Start();
}
}

SignalR服务器端代码参照http://www.asp.net/signalr来写

SignalA修改过后源码下载

更多用法参照SignalA官方文档

SignalR推送服务在Android的实现 SignalA的更多相关文章

  1. IOS JPush 集成步骤(极光远程推送解决方案,支持android和iOS两个平台)

    ●  什么是JPush ●  一套远程推送解决方案,支持android和iOS两个平台 ●  它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量.开发复杂 度 ●  更多的信息,可 ...

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

    从网络上搜索到的Demo,自己进行了稍微的改动 Signala类库从https://github.com/erizet/SignalA获得,不过相关引用有错误,需要手动修正. 下载相关源码 packa ...

  3. signalr推送消息

    参考:Tutorial: Getting Started with SignalR 2 and MVC 5 环境:vs2013,webapi2,entity framework6.0 实现效果:当用户 ...

  4. JPush (极光推送) For Xamarin.Android

    官方教程上讲的是 GCM (Google Cloud Messaging) , 不过 GFW 是 GCM 过不去的坎. 极光推送 JPush 是国内的一个不错的替代方案. JPush 提供的 API ...

  5. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序

    SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论   异常汇总:http://www ...

  6. jpush-react-native 推送功能(Android 篇)

    github原地址 极光推送官方支持的 React Native 插件 安装 npm install jpush-react-native --savenpm install jcore-react- ...

  7. C#服务端通过Socket推送数据到Android端App中

    需求: 描述:实时在客户端上获取到哪些款需要补货. 要求: 后台需要使用c#,并且哪些需要补货的逻辑写在公司框架内,客户端采用PDA(即Android客户端 版本4.4) . 用户打开了补货通知页面时 ...

  8. Asp.net Core3.1+Vue 使用SignalR推送数据

    本文就简单使用 往前端页面推送消息 SignalR 是什么 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Serv ...

  9. 基于SuperSocket的IIS主动推送消息给android客户端

    在上一篇文章<基于mina框架的GPS设备与服务器之间的交互>中,提到之前一直使用superwebsocket框架做为IIS和APP通信的媒介,经常出现无法通信的问题,必须一天几次的手动回 ...

随机推荐

  1. ZooKeeper服务-一致性、实现

    实现 ZooKeeper服务有两种不同的运行模式.一种是“独立模式”(standalone mode),即只有一个ZooKeeper服务器.这种模式比较简单,适合于测试环境,但是不能保证高可用性和可恢 ...

  2. MapReduce-输入分片与记录

    一个输入分片(split)就是一个由单个map操作来处理的输入块.每一个map操作只处理一个输入分片.每个分片被划分为若干个记录,每条记录就是一个键值对,map一个接一个地处理记录.输入分片和记录都是 ...

  3. TCP的三个接收队列

    之前对于TCP接收过程中的三个队列的关系之前没搞清楚. 这几天,在同事邱的帮助下,终于把关系理清了,故特此做个笔记. 一.在软中断中加入数据包 tcp_v4_rcv()函数是tcp层收包的入口. in ...

  4. 使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,log4j和logj2,idea控制台信息乱码(文末)

    说来惭愧,今天就写了个"hello world",了解了一下log4j的日志. 本来是想在控制台打印个log信息,也是遇到坎坷重重,开始也没去了解log4j就来使用,log4j配置 ...

  5. Python快速学习-获取对象信息

    1type() 获取对象的基本类型,判断两个对象类型. 2types 判断对象是否是函数,使用前要引入import types 3isinstance() 判断class类型,判断一个变量是否是某种类 ...

  6. 偶尔出现button不能点击的情况

    原因: 1.没有加点击事件 2.从别的项目或者别的场景导入的预制体,要更换canvas才能点击,不然没反应

  7. JS解析+预解析相关总结

    [js预解析机制]先来说说js的解析机制吧,浏览器在解析js代码时是从上到下解析的.解析顺序如:(1)预解析    找var和function (2)逐行代码解析    表达式    函数调用     ...

  8. 清北学堂(2019 5 1) part 4

    今天讲数论 1.进制问题(将n转换成k进制数): 1.方法:短除法 将n/k,保存,将商当做新的n,将余数保存,直到商为0,将余数(包括0),倒序输出,即得n的k进制数 2.关于高精四则运算(我本以为 ...

  9. foobar2000下播放DSD音乐的插件

    需要测试foobar下面DSD的播放插件,翻遍了度娘,找不到一个容易下载的地方,要不一大堆广告,要不就是需要账号,烦死了,总是设置了很多障碍.其实这东西是人家老外开发的,最原始的插件名字叫做foo_i ...

  10. Mysql时间戳函数和ip转换函数

    Mysql中对于unix时间戳的转换还是挺方便的, 1.转换为时间戳 select unix_timestamp('2013-07-15 10-06-07') 如果参数为空,则为当前时间 2.转换为时 ...