`
fanfq
  • 浏览: 269887 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android Server Push - MQTT

 
阅读更多
最近花了较长的时间重点研究有关服务器推送的技术,在下面的几篇文章中分别总结下Android C2DM,MQTT,Androidpn推送的通知。

敬请期待...

2012.2.14

哈哈,没想到有朋友也用到这个玩意,最近一段时间比较忙一直没有跟新。现在先简单的介绍下怎么配置。
MQTT的环境配置很简单,
Server
1.首先你需要安装apache php运行环境,网上有现成的集成的安装环境。
apache php环境安装好后将tokudu-PhpMQTTClient-ba4e494.zip解压至webroot目录下,然后启动apache服务
2.如果你是windows 环境在服务器端再启动 rsmb_1.2.0.zip\windows\borker.exe (我一开始客户端始终连接不上服务器就是因为这个服务没有开)
3.Client
tokudu-AndroidPushNotificationsDemo-ea18b09.zip\tokudu-AndroidPushNotificationsDemo-ea18b09\src\com\tokudu\demo\PushService.java
line 38
private static final String MQTT_HOST = "209.124.50.174"; (修改成你的服务器端ip)

好了就这三步,MQTT的环境就配置好了,然后重新编译客户端的程序并且安装手机或者模拟器中。再在服务器端查看,你会看见server status 变成online了,那就表明客户端连接成功。然后就可以向客户端发送消息了。

由于时间关系就先写这么多了,如有疑问我再跟新的。

2012.3.20
分享到:
评论
27 楼 xlian 2013-10-23  
pdztop 写道
我第一次推送成功了 然后我继续推就收不到了 这是为什么呢


我想应该是因为这个:
// Set quality of services to 0 (at most once delivery), since we don't want push notifications
// arrive more than once. However, this means that some messages might get lost (delivery is not guaranteed)
private static int[] MQTT_QUALITIES_OF_SERVICE = { 0 } ;
private static int MQTT_QUALITY_OF_SERVICE   = 0;
这段代码在PushService.java中
26 楼 pdztop 2013-10-22  
我第一次推送成功了 然后我继续推就收不到了 这是为什么呢
25 楼 happytianqiu 2013-10-15  
你好,我用的也是tokudu的mqtt android,但这个我测试后发现不稳定,推送一天下来就收不到信息了,这个是什么原因呢?要怎么解决
24 楼 cvb21354 2013-04-25  
djy252 写道
还有个问题,php service如何获取 连接的用户列表呢?没有这个列表,操作很困难的

再在服务器端查看,你会看见server status 变成online了
是在哪里看用户列表呢,php页面吗,还是那边啊,php页面推送目标(push target)填写什么啊
23 楼 djy252 2012-12-03  
还有个问题,php service如何获取 连接的用户列表呢?没有这个列表,操作很困难的
22 楼 djy252 2012-12-03  
php的难搞定啊。
楼主能把php的改成 ASP。net的吗?
21 楼 fanfq 2012-09-27  
xiaoyu6135013 写道
请教下,你php服务端是如何接收信息?(因为接收信息为一个堵塞的方法,会把服务器资源耗尽)

虽说单位时间内处于长连接状态,但其实是短连接,每过一个周期会发一个心跳包已确保连接可用。后台会起一个线程池管理这些套接字的,至于资源会耗谁叫他是服务器呢。
20 楼 xiaoyu6135013 2012-09-27  
请教下,你php服务端是如何接收信息?(因为接收信息为一个堵塞的方法,会把服务器资源耗尽)
19 楼 fanfq 2012-08-30  
Jason_Bourne 写道
楼主你好,我把mqtt服务端部署到win2003下,运行broker程序报应用程序错误,请问这是怎么回事呢?

没有在2003上试过,我的测试环境是win7.
18 楼 Jason_Bourne 2012-08-30  
楼主你好,我把mqtt服务端部署到win2003下,运行broker程序报应用程序错误,请问这是怎么回事呢?
17 楼 kongnanlive 2012-08-26  
s2q1984 写道
2.33下正常使用,但是到4.0以上系统就接不到消息了

亲,我和你遇到一样的问题。求楼主解决。
16 楼 s2q1984 2012-08-15  
2.33下正常使用,但是到4.0以上系统就接不到消息了
15 楼 fanfq 2012-08-03  
hanheihanhei 写道
android 客户端安装在模拟机上面,点击启动服务,总是异常退出。查看logcat,有一下输出:
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
W/dalvikvm( 1033): VFY: unable to find class referenced in signature (Lcom/ibm/m
qtt/MqttPersistence;)
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
E/dalvikvm( 1033): Could not find class 'com.tokudu.demo.PushService$MQTTConnect
ion', referenced from method com.tokudu.demo.PushService.connect


先启服务器,再启客户端。
14 楼 fanfq 2012-08-03  
wangxinasy 写道
请问如何想所有设备发送消息啊?他的demo中只有像单个设备发送消息

本来就是所有的设备都可以收到push的信息的。你多用几个设备试下不就知道了。
13 楼 wangxinasy 2012-08-01  
请问如何想所有设备发送消息啊?他的demo中只有像单个设备发送消息
12 楼 hanheihanhei 2012-06-20  
android 客户端安装在模拟机上面,点击启动服务,总是异常退出。查看logcat,有一下输出:
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
W/dalvikvm( 1033): VFY: unable to find class referenced in signature (Lcom/ibm/m
qtt/MqttPersistence;)
I/dalvikvm( 1033): Failed resolving Lcom/tokudu/demo/PushService$MQTTConnection;
interface 35 'Lcom/ibm/mqtt/MqttSimpleCallback;'
W/dalvikvm( 1033): Link of class 'Lcom/tokudu/demo/PushService$MQTTConnection;'
failed
E/dalvikvm( 1033): Could not find class 'com.tokudu.demo.PushService$MQTTConnect
ion', referenced from method com.tokudu.demo.PushService.connect
11 楼 n.adepu 2012-05-07  
Hello Tree Juan,

Thanks for you reply. I have installed php and apache servers in my linux server. Please see the below result. And could you please tell me  what php&httpd dependencies are required to run MQTT successfully

[root@user ~]# php -v
PHP 5.3.3 (cli) (built: Feb  2 2012 23:24:47)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[root@user ~]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:25:23

Thanks
10 楼 fanfq 2012-05-04  
树娟king 写道
没有遇到过,貌似端口号的问题。你有该端口号么?
没有修改啊 端口号是1883没坐修改,我在想是不是PHP服务端的问题啊!


之前的socket error的问题解决了没?
9 楼 fanfq 2012-05-04  
n.adepu 写道
Hello,

I'm also facing the sam problem in linux centos 6.2

20120502 170654.690 CWNAN0020W Socket error on socket 4, peer address 127.0.0.1:32993; ending connection

Please someone help me. I would appreciate your help.

Thanks

I can't recreate the problem,So I can't give you an accurate answer.
You'd better try it on windows OS.

Thanks,
8 楼 n.adepu 2012-05-02  
Hello,

I'm also facing the sam problem in linux centos 6.2

20120502 170654.690 CWNAN0020W Socket error on socket 4, peer address 127.0.0.1:32993; ending connection

Please someone help me. I would appreciate your help.

Thanks

相关推荐

    Android基于mqtt消息推送通知指南

    adoption of MQTT protocol enables real-time communication between Android client and App Server, solving the difficulty of Android push notification. 在 Android 消息推送通知中,C2DM 是一个重要的角色...

    mqtt4android-master

    Open the connection to the MQTT server mqtt connect ; }">测试通过 mosquitto代理 protected void connect String host String client { Default host is test mosquitto org you should change this ...

    Android 推送原理(Android Push Notification)详解

    Android推送原理,也被称为Android Push Notification,是一种在应用程序不运行时向用户传递信息的技术。它允许服务器端将数据推送到Android设备,即使应用在后台或完全关闭也能接收到通知。这种技术对于保持用户与...

    Android平台消息推送技术的应用研究.pdf

    首先,Android平台的消息推送机制通常有三种方式:轮询(Pull)、SMS(Push)以及持久连接(Push)方式。轮询方式由客户端定期向服务器询问新消息,但频繁查询会消耗电量和流量,而低频率则可能导致信息延迟。SMS...

    Android服务器推送技术.pdf

    在iOS平台上,这个功能可以通过苹果的Push Notification Service(APNS)轻松实现,但在Android系统中,情况较为复杂。Google为此提供了Cloud to Device Messaging(C2DM)服务,允许服务器向Android应用程序发送...

    ASP.NET WEB端消息推送源码

    对于Android和iOS的推送,可能涉及到各自的操作系统提供的推送通知服务,如Google的Firebase Cloud Messaging(FCM)和Apple的Push Notification Service(APNs)。源码可能会包含与这些服务接口的实现,以确保即使...

    im通讯abcd

    - **C/S架构**:客户端(Client)与服务器(Server)模式,客户端发送请求,服务器响应。 2. **协议标准**: - **XMPP(Extensible Messaging and Presence Protocol)**:开放标准,用于实时通讯和消息传递。 -...

    仿微信安卓聊天软件 客户端

    1. **即时通讯协议**:即时通讯软件一般基于XMPP(Extensible Messaging and Presence Protocol)协议、MQTT(Message Queuing Telemetry Transport)协议或自定义协议。这些协议确保数据在客户端和服务器间安全、...

    即时通讯源码

    配合长轮询或HTTP/2 Server Push技术,可以实现低延迟的实时通信。 7. **聊天记录存储**:历史消息通常需要持久化存储,可以使用关系型数据库(如MySQL)、NoSQL数据库(如MongoDB)或者云存储服务。 8. **多媒体...

    一个聊天软件的源代码

    根据文件名“IMCS”,可能是“Instant Messaging Client/Server”的缩写,暗示可能使用的是C++或Java,因为这些语言在构建客户端-服务器架构时较为常见。 2. **客户端**:聊天软件的客户端负责用户界面、输入输出、...

Global site tag (gtag.js) - Google Analytics