android 配置signalR与服务器连接通信
来源:互联网 发布:淘宝怎么换支付宝 编辑:程序博客网 时间:2024/06/05 07:33
android 配置signalR与服务器连接通信
这几天公司项目需要使用signalR来进行与服务器的实时通讯连接,于是,上网百度了很多相关的资料,但是有用的信息很少,可能也是自己不会搜索吧,最后还是自己根据一个项目的例子慢慢弄懂了大致的流程,在进行搜索的时候,会出现一个词signalA,这是基于signalR实现的一个推送框架,具体里面要怎么做,我也没有详细了解。
ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时
Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求
新的数据。
--引用百度百科
下面就先介绍一下signalR的配置吧。
1、首先先下载signalR相关的jar包,链接地址:点击打开链接
下载jar后,将其导入你的项目中,也就是拷贝到libs里面,如下图:
查看app中的build.guild的dependencies里面添加了如下图所示,则依赖成功
2、在这里先介绍几个重要的变量:
(1)serverUrl,服务器的地址,需要与服务器那边对接,怎么可能少得了这个地址呢。
(2)HubConnection类和HubProxy类,在与服务器进行连接的时候是少不了这两个类的,这两个类的初始化如下:
mHubConnection = new HubConnection(serverUrl);mHubProxy= mHubConnection.createHubProxy(SERVER_HUB_CHAT);
其中SERVER_HUB_CHAT 是一个字符串,需要与服务器那边名称相对应,一般SERVER_HUB_CHAT = “ServerHub”
(3)HubProxy类中的两个方法:invoke()和subscribe()
invoke()方法主要是客户端这边去调用服务器那边的方法,其调用时的方法名称必须与服务器端的要一致。例子如下:
mHubProxy.invoke("服务器端的方法名称","参数1", "参数2"); invoke()方法的原型如下,其参数可以无限添加 public SignalRFuture<Void> invoke(String method, Object... args) { return this.invoke((Class)null, method, args); }subscribe()方法则是让服务器端调用客户端这边的方法,其调用时的方法名称必须与服务器端的一致。例子如下:
mHubProxy.subscribe("方法名[服务器端调用客户端方法的名称]").addReceivedHandler( new Action<JsonElement[]>() { @Override public void run(JsonElement[] obj)//服务端传回来的数据 throws Exception { Log.i("hub", "ffffffff"+obj[0].toString()+"长度:"+obj.length); Log.i("hub", "ffffffff"+obj[1].toString()+"长度:"+obj.length); Log.i("hub", "ffffffff"+obj[2].toString()+"长度:"+obj.length); Log.i("hub", "ffffffff"+obj[3].toString()+"长度:"+obj.length); if (obj.length > 3) { String data = obj[2].toString(); Log.i("hub", obj[2].toString()); } } });
该方法的原型如下所示:
public Subscription subscribe(String eventName) { this.log("Subscribe to event " + eventName, LogLevel.Information); if(eventName == null) { throw new IllegalArgumentException("eventName cannot be null"); } else { eventName = eventName.toLowerCase(Locale.getDefault()); Subscription subscription; if(this.mSubscriptions.containsKey(eventName)) { this.log("Adding event to existing subscription: " + eventName, LogLevel.Information); subscription = (Subscription)this.mSubscriptions.get(eventName); } else { this.log("Creating new subscription for: " + eventName, LogLevel.Information); subscription = new Subscription(); this.mSubscriptions.put(eventName, subscription); } return subscription; } }3、具体详细的步骤就先不说了,还是直接运行例子会比较好理解
signalR项目的链接:项目demo
注意:如果运行这个项目的例子后有个空指针的bug,就是MainActivity中的两个变量出问题,mHubProxy和mHubConnection,这两个变量没有赋值。至于为什么没有赋值是因为在startSignalR()这个方法中又定义了局部变量connection和proxy,所以应该将下图中的
换成下图:
即可。
0 0
- android 配置signalR与服务器连接通信
- SignalR实现服务器与客户端的实时通信
- SignalR实现服务器与客户端的实时通信
- SignalR 实现 Web 客户端与服务器实时通信
- SignalR实现服务器与客户端的实时通信
- Android socket与服务器通信长连接通信
- Android socket与服务器通信长连接通信
- Android socket与服务器通信及心跳连接的实现
- android与服务器servlet通信
- Android与Mysql服务器通信
- Android与服务器Socket通信
- Android与服务器的通信
- Android中与服务器通信
- Android与服务器通信之socket通信
- Android与服务器通信之socket通信
- 用Android模拟器如何与本地服务器PC进行连接通信
- android与服务器连接保持
- Android客户端与服务器连接
- sqlite数据库的创建,升级和降级
- clang diagnostic的使用
- POJ-1769-线段树,dp
- 好东西,怕丢,先存一个 Looper、Handler、Message
- NNU_20161124_7PAT1008. 数组元素循环右移问题
- android 配置signalR与服务器连接通信
- hibernate自连接查询hql语句
- PyQt5 widgets
- Mac(一)——终端切换到其他路径
- 灵活而奇特的C++语言特性——引用(下)
- Unity LZMA GZIP 压缩、解压文件 和 打包文件夹 (支持进度回调)
- snmp4j的简单实现
- 润乾报表实现返回效果
- Unity实战 RTS3D即时战略游戏开发(一)