设备端代码(mqttClient):https://help.aliyun.com/document_detail/42648.html?spm=5176.doc30579.6.569.ZEgA1g

服务端代码(aliyun-java-sdk-iot):https://help.aliyun.com/document_detail/30579.html?spm=5176.doc42693.6.597.WhnZQa

消息代码(aliyun-sdk-mns-samples):https://help.aliyun.com/document_detail/27508.html?spm=5176.doc27509.6.648.9hGlrb

https://help.aliyun.com/document_detail/42693.html?spm=5176.doc50633.6.573.wlKHyi

https://help.aliyun.com/document_detail/27509.html?spm=5176.product27412.6.652.uIO9HW

一、设备端发送消息到服务端流程

  1、终端发送消息到物联网套件

    SimpleClient4IOT/connectMqtt:sampleClient.publish(pubTopic,message);

     String content = "客户端发送消息到服务端";
MqttMessage message = new MqttMessage(content.getBytes("utf-8"));
message.setQos();//消息qos 0:最多一次,1:至少一次
sampleClient.publish(pubTopic, message);//发送数据到某个topic
System.out.println("发送消息成功");

  2、物联网套件发送消息到消息服务

    通过上一篇 阿里云学习之IOT物联网套件(配置篇),讲解物联网套件和消息服务的具体配置流程和走向

    规则引擎——>主题——>订阅——>队列

  3、消息服务发送消息到服务端,服务端接收消息

    ComsumerDemo/main:queue.popMessage();

        MNSClient client = account.getMNSClient(); //this client need only initialize once
CloudQueue queue = client.getQueueRef("aliyun-iot-UGlr70uPYVM");// replace with your queue name
System.out.println("开始调试...");
for (int i = ; i < ; i++)
{
Message popMsg = queue.popMessage();
System.out.println("消息为空...");
if (popMsg != null){
System.out.println("message handle: " + popMsg.getReceiptHandle());
System.out.println("message body: " + popMsg.getMessageBodyAsString());
System.out.println("message id: " + popMsg.getMessageId());
System.out.println("message dequeue count:" + popMsg.getDequeueCount());
//<<to add your special logic.>> //remember to delete message when consume message successfully.
queue.deleteMessage(popMsg.getReceiptHandle());
System.out.println("delete message successfully.\n");
}
}

二、服务端发送消息到设备端流程

  1、服务端发送消息到物联网套件

     String accessKey = "账号key";
String accessSecret = "账号Secret";
try {
DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
} catch (ClientException e) {
e.printStackTrace();
}
IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKey, accessSecret);
DefaultAcsClient client = new DefaultAcsClient(profile); //初始化SDK客户端 PubRequest request = new PubRequest();
request.setProductKey("产品key");
request.setMessageContent(Base64.encodeBase64String("消息服务".getBytes()));
request.setTopicFullName("topic");// /UGlr70uPYVM/bulb/get
     request.setQos(); //目前支持QoS0和QoS1  PubResponse response; try { response = client.getAcsResponse(request); System.out.println(response.getSuccess()); System.out.println(response.getErrorMessage()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); }

    2、设备端接收消息

        sampleClient.setCallback(new MqttCallback() {
@Override
/*public void connectionLost(Throwable cause) {
LogUtil.print("连接失败,原因:" + cause);
cause.printStackTrace();
}*/ @Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
LogUtil.print("接收到消息,来至Topic [" + topic + "] , 内容是:["
+ new String(message.getPayload(), "UTF-8") + "], ");
} @Override
/*public void deliveryComplete(IMqttDeliveryToken token) {
//如果是QoS0的消息,token.resp是没有回复的
LogUtil.print("消息发送成功! " + ((token == null || token.getResponse() == null) ? "null"
: token.getResponse().getKey()));
}*/
});

阿里云学习之IOT物联网套件(客户端与服务端的后台数据传输)的更多相关文章

  1. 阿里云学习之IOT物联网套件(配置篇)

    文档时间:2018.-1-24 首注:此文章是参照以下文章的整合与补充: https://bbs.aliyun.com/read/309106.html?amp;displayMode=1&p ...

  2. zeromq学习笔记2——简单的客户端和服务端测试程序

    1.前言 zeromq提供了guide,http://zguide.zeromq.org/,可以帮助新手快速上手,提供了C\C++\PHP等多种语言. 2.测试程序 使用zeromq给的hwserve ...

  3. 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

    在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...

  4. TCP学习之五:客户端、服务端异步传输字符串

    参考学习张子阳大神的博客:http://www.cnblogs.com/JimmyZhang/category/101698.html 消息发送接口: 消息接收接口: 客户端: 服务端: 消息发送类: ...

  5. TCP学习之三:客户端、服务端同步传输字符串

    参考学习张子阳大神的博客:http://www.cnblogs.com/JimmyZhang/category/101698.html 一个客户端.发送一条消息 客户端: 服务端: 注意:Networ ...

  6. 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验

    [阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...

  7. 【阿里云产品公测】高大上的搜索服务OpenSearch,你值得拥有!

    [阿里云产品公测]高大上的搜索服务OpenSearch,你值得拥有! 作者:阿里云用户trcher ​ 一.前言: 在OpenSearch没出来之前,就一直想给网站做个搜索功能,虽然网站本身自带搜索功 ...

  8. Docker学习笔记 - Docker客户端和服务端

    学习内容: Docker客户端和服务端的通讯方式:client和自定义程序 Docker客户端和服务端的连接方式:socket 演示Docker客户端和服务端之间用remote-api通讯:nc   ...

  9. Netty4 学习笔记之二:客户端与服务端心跳 demo

    前言 在上一篇Netty demo 中,了解了Netty中的客户端和服务端之间的通信.这篇则介绍Netty中的心跳. 之前在Mina 中心跳的使用是通过继承 KeepAliveMessageFacto ...

随机推荐

  1. Oracle_where子句

    Oracle_where子句 --1.查询员工名为'SMITH'的信息 select * from emp where ename = 'SMITH';   --2.查询在1980/12/17入职的员 ...

  2. Oracle_view视图

    Oracle_view视图 视图view --视图:view --查询班级信息并统计各班的人数 select * from stu; select * from clazz;     select c ...

  3. Nginx实战之反向代理WebSocket的配置实例

    http://www.jb51.net/article/112183.htm 最近在工作中遇到一个需求,需要使用 nginx 反向代理websocket,经过查找一番资料,目前已经测试通过,所以这篇文 ...

  4. ser-u服务器安装和使用(创建ftp服务器)

    安装serv-u,创建ftp服务器,以及连接服务器上传和下载文件. 工具/原料 serv-u,8uftp 装有win7以上或者winserver系统的电脑 安装serv-u 1 http://pan. ...

  5. parse_url   解析 URL,返回其组成部分

    parse_url - 解析 URL,返回其组成部分 array parse_url ( string $url [, int $component = -1 ] ) 本函数解析一个 URL 并返回一 ...

  6. 本地如何使用phpstudy环境搭建多站点

    http://jingyan.baidu.com/article/e52e36154227ef40c70c5147.html 平时在开发项目的时候, 多个项目同时开发的时候会遇到都得放到根目录才能正常 ...

  7. Django 模版中如何对主菜单进行选中?

    问题描叙: 在实际模版中,返回的页面我们想要主菜单保持一种状态,这个主菜单进去的子页面,都需要保持主菜单选择状态 例如 主菜单是 课程, 下面展现的章节和视频页面时候, 课程这个主菜单在展现这个菜单下 ...

  8. background是什么样式?

    background是什么样式? 给标签添加背景图片 分为: background: url("图片路径");    #添加图片 background-position: xpx ...

  9. python初识-day3

    1.字符串常用操作(较多,用代码加注释表示) name = '\tMy name is congcong' print(name.capitalize())#输出结果为 My name is cong ...

  10. 更改Patrol Agent的密码

    大家可以使用P3console去做,具体方法请见:http://wenku.baidu.com/link?url=HbSzxNV2SPrlpk_Bfmcg0CNZuAlyX4jgdp4vbrxmynv ...