概述M2M(Machine-to-Machine)是一种点对点通信技术。本章以NodeJSSDK为例,在M2M设备之间使用基于Topic消息路由的通信。主要介绍如何构建基于物联网平台的M2M设备间的通信架构。实验步骤第1部分:配置相关1.为产品、设备和主题创建参考链接。建立消息路由。该部分目前不支持直接配置门户。需要建立基于管理API的消息路由关系:CreateTopicRouteTable。测试可直接使用OpenAPI快速实现相关功能,本地集成相关功能可直接基于SDK。2、JAVASDKDemoimportcom.aliyuncs.DefaultAcsClient;importcom.aliyuncs.IAcsClient;importcom.aliyuncs.exceptions.ClientException;importcom.aliyuncs.exceptions.ServerException;importcom.aliyuncs.iot.model.v20170420.CreateTopicRouteTableRequest;importcom.aliyuncs.iot.model.v20170420.CreateTopicRouteTableResponse;importcom.aliyuncs.profile.DefaultProfile;importcom.google.gson.Gson;importjava.util.*;publicclassCreateTopicRouteTable{publicstaticvoidmain(String[]args){DefaultProfileprofile=DefaultProfile.getProfile("cn-shanghai","LTAIOZZg********","v7CjUJCMk7j9aKduMAQLjy********");IAcsClient客户端=newDefaultAcsClient(配置文件);CreateTopicRouteTableRequestrequest=newCreateTopicRouteTableRequest();request.setRegionId("cn-上海");ListdstTopicList=newArrayList();dstTopicList.add("/a12OcQ4****/device2/user/RouteData");请求.setDstTopics(dstTopicList);request.setSrcTopic("/a12OcQ4****/device1/user/RouteData");尝试{CreateTopicRouteTableResponseresponse=client.getAcsResponse(request);System.out.println(newGson().toJson(response));}catch(ServerExceptione){e.printStackTrace();}catch(ClientExceptione){System.out.println("ErrCode:"+e.getErrCode());System.out.println("ErrMsg:"+e.getErrMsg());System.out.println("RequestId:"+e.getRequestId());}}}注:SDK版本差异可根据实际版本调整3、查询路径由关系importcom.aliyuncs.DefaultAcsClient;importcom.aliyuncs.IAcsClient;importcom.aliyuncs.exceptions.ClientException;importcom.aliyuncs.exceptions.ServerException;importcom.aliyuncs.iot.model.v20170420.QueryTopicRouteTableRequest;importcom.aliyuncs.iot.model.v20170420.QueryTopicRouteTableResponse;importcom.aliyuncs.profile.DefaultProfile;importcom.google.gson.Gson;publicclassQueryTopicRouteTable{publicstaticvoidmain(String[]args){DefaultProfileprofile=DefaultProfile.getProfile("cn-上海","LTAIOZZgY********","v7CjUJCMk7j9aKduMAQLjy********");IAcsClient客户端=newDefaultAcsClient(配置文件);QueryTopicRouteTableRequestrequest=newQueryTopicRouteTableRequest();request.setRegionId("cn-上海");request.setTopic("/a12OcQ4****/device1/user/RouteData");尝试{QueryTopicRouteTableResponseresponse=client.getAcsResponse(request);System.out.println(newGson().toJson(响应));}catch(ServerExceptione){e.printStackTrace();}catch(ClientExceptione){System.out.println("ErrCode:"+e.getErrCode());.out.println("ErrMsg:"+e.getErrMsg());System.out.println("RequestId:"+e.getRequestId());}}}运行结果:{"requestId":"9404FD71-7461-478E-B064-0AEB15C91111","success":true,"dstTopics":["/a12OcQ4****/device2/user/RouteData"]}第二部分:客户端代码相关4.NodeJSSDK安装参考链接5.设备端业务代码device1//节点导入包名constiot=require('alibabacloud-iot-device-sdk');//浏览器,微信小程序,支付宝小程序导入./dist编译后的js文件//constiot=require('./dist/alibabacloud-iot-device-sdk.js');//js版下载地址://https://github.com/aliyun/alibabacloud-iot-device-sdk/tree/master/dist或者//alibabacloud-iot-device-sdk.js下载地址https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.js或//alibabacloud-iot-device-sdk.min.js下载地址https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.min.js//constdevice=iot.device({productKey:'a12OcQ4****',deviceName:'device1',deviceSecret:'3yWqKtWxN7VPuWEEDEn4eKWN********'//支付宝小程序和微信小程序还需要配置协议参数//"protocol":'alis://',"protocol":'wxs://',});device.on('connect',()=>{console.log('connectsuccessful!');//向指定的Topic发送消息,等待规则引擎转发给另一个主题device.publish('/a12OcQ4****/device1/user/RouteData','{"ke1":"value1test"}');device.publish('/a12OcQ4****/device1/user/RouteData','这是我的测试作业。');});device2//节点导入包名constiot=require('alibabacloud-iot-device-sdk');//浏览器、微信小程序、支付宝小程序导入。/dist编译好的js文件//constiot=require('./dist/alibabacloud-iot-device-sdk.js');//js版本下载地址://https://github.com/aliyun/alibabacloud-iot-device-sdk/tree/master/dist或//alibabacloud-iot-device-sdk.js下载地址https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.js或//alibabacloud-iot-device-sdk.min.js下载链接https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.min.js//constdevice=iot.device({productKey:'a12OcQ4****',deviceName:'device2',deviceSecret:'X9fzX9u0aIOORNghPyfYKq22*********'//支付宝小程序和微信小程序另外需要配置协议参数//"协议":'alis://',"protocol":'wxs://',});//消息device.subscribe('/a12OcQ4****/device2/user/RouteData');device.on('connect',()=>{console.log('连接成功!');});device.on('message',(topic,payload)=>{console.log(topic,payload.toString());});8.试运行参考链接基于Topic消息路由的M2M设备间通信