mqtt 服务器与客户端通讯
mqtt 服务器与客户端通讯。
服务器端
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/*** Created by niyl on 2016/1/13.*/var mosca = require('mosca');var MqttServer = new mosca.Server({port: 8000});/*** 验证方法***/var authenticate = function(client, username, password, callback) {//var authorized = (username.toString() === '18FE34F48379-DC' && password.toString() === '666666');var authorized = (password.toString() === '666666');if (authorized){//存储设备类型client.type = username.toString().split('-')[1];}callback(null, authorized);}//MqttServer.on('clientConnected', function(client){console.log('client connected', client.id);});/*** 监听MQTT主题消息**/MqttServer.on('published', function(packet, client) {var topic = packet.topic;// console.log('message-arrived--->','topic ='+topic+',message = '+ packet.payload.toString());switch(topic){case 'pubMsg':console.log('message-publish', packet.payload.toString());//MQTT转发主题消息MqttServer.publish({topic: 'other', payload: 'hello'});//发送消息NODEJSconsole.log('HD: ');//发送socket.io消息//io.sockets.socket(YHSocketMap.get('1000')).emit('subState', packet);break;case 'other':console.log('message-123', packet.payload.toString());break;case 'order':console.log('order', packet.payload.toString());break;case 'test':console.log('test', packet.payload.toString());break;}});MqttServer.on('ready', function(){console.log('mqtt is running...');//MqttServer.authenticate = authenticate;}); |
客户端程序
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
var mqtt = require('mqtt');var client = mqtt.createClient(8000, 'localhost',{clientId:'1',clean:false});//向服务器订阅一个主题client.subscribe('other',{qos:1});client.subscribe('test',{qos:1});//当消息到达时var yy=0;var ww=0;client.on('message', function (topic, message) {var tt=(message.toString());console.log(tt);switch(tt){case 'redd' :ww++;console.log(10000-ww);break;case 'hello' :yy++;console.log(yy);break;}});// PUBLISH-发布消息var num=0;setInterval(function (){client.publish('order', ' ' + (num++),{qos:1, retain: true});console.log("num="+num);}, 5000);setInterval(function(){client.publish('pubMsg', 'send ' );// console.log("PubMsg");},10000);setInterval(function(){client.publish('test', 'redd' );// console.log("test");},20000);var start=Date.now();console.log("服务端"+start); |
mqtt 服务器与客户端通讯的更多相关文章
- 一个基于TCP/IP的服务器与客户端通讯的小项目(超详细版)
1.目的:实现客户端向服务器发送数据 原理: 2.建立两个控制台应用,一个为服务器,用于接收数据.一个为客户端,用于发送数据. 关键类与对应方法: 1)类IPEndPoint: 1.是抽象类EndPo ...
- Netty——简单创建服务器、客户端通讯
Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用.Netty相当简化和流线化了网络应用的编程开发过程 ...
- C# MQTT 服务端客户端通讯
关于MQTT 在这里我就不做过多的介绍了 , 超时空连接点我 MQTT示例 注: 该示例演示统一使用WPF, 简单MVVM模式演示, 复制代码需注意引用 NuGet包 GalaSoft MQTT服务 ...
- Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能
Android BLE与终端通信(四)--实现服务器与客户端即时通讯功能 前面几篇一直在讲一些基础,其实说实话,蓝牙主要为多的还是一些概念性的东西,当你把概念都熟悉了之后,你会很简单的就可以实现一些逻 ...
- MQTT——服务器搭建(一)
MQTT介绍 MQTT,是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备: 轻量级的消息订阅和发布(publish/subscribe)协议 建 ...
- mqtt服务器apollo的搭建和测试工具paho的使用
(1)前言 MQTT协议是IBM开发的一个即时通讯协议; 基于发布/订阅的消息协议,近些年来被广泛应用于能源.电力.....等硬件性能低下的远程设备,此外国内很多企业使用MQTT作为android手机 ...
- 常见MQTT服务器搭建[转载]
简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠的网络的进行远程传感器和控制设备通 ...
- 快速搭建MQTT服务器(MQTTnet和Apache Apollo)
前言 MQTT协议是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分,http://mqtt.org/. MQTT is a machine-to-machine (M2M)/" ...
- 常见MQTT服务器搭建与试用
常见MQTT服务器搭建与试用 简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠 ...
随机推荐
- vcpkg —— VC++ 打包工具
引用: http://www.tuicool.com/articles/aeiYz2v vcpkg 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以帮助您在 W ...
- 基于CSS3自定义美化复选框Checkbox组合
今天我们要来分享一组非常漂亮的CSS3自定义复选框checkbox,每一个checkbox都有其各自的特点.有几款checkbox在选中的情况下还会出现动画效果,非常不错的CSS3自定义美化check ...
- PHP的HashTable实现
转载自: http://it.taocms.org/07/1145.htm 数据结构: HashTable数据结构的描述在Zend/zend_hash.h文件中.首先,HashTable中的每一个元素 ...
- [uart]UART中的硬件流控RTS与CTS
转自:http://blog.csdn.net/zeroboundary/article/details/8966586 在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) ...
- ExtJs Ext.data.Model 学习笔记
Using a Proxy Ext.define('User', { extend: 'Ext.data.Model', fields: ['id', 'name', 'email'], proxy: ...
- java依赖的外部文件路径的获取
在开发阶段一直使用以下方式调试没有问题: String path = KStream104.class.getResource("/").getFile().toString(); ...
- HISTTIMEFORMAT 设置历史命令时间的格式
echo 'HISTTIMEFORMAT="%F %T `whoami`" ' >>/etc/bashrc whoami 完了后面要有空格不然会连住和命令 ===== ...
- 实现对div的显示隐藏
jQuery对div的显示和隐藏: 显示: 复制代码 代码如下:$("#id").show() 隐藏: 复制代码 代码如下: $("#id").show() j ...
- android抓包工具——使用fiddler4在安卓手机抓包
Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包 ...
- -27979 LoadRunner 错误27979 找不到请求表单 Action.c(73): Error -27979: Requested form not found
LoadRunner请求无法找到:在录制Web协议脚本回放脚本的过程中,会出现请求无法找到的现象,而导致脚本运行停止. 错误现象:Action.c(41): Error -27979: Request ...