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‘});

//发送消息NODEJS

console.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);

时间: 2024-08-07 21:18:54

mqtt 服务器与客户端通讯的相关文章

一个基于TCP/IP的服务器与客户端通讯的小项目(超详细版)

1.目的:实现客户端向服务器发送数据 原理: 2.建立两个控制台应用,一个为服务器,用于接收数据.一个为客户端,用于发送数据. 关键类与对应方法: 1)类IPEndPoint: 1.是抽象类EndPoint的实现类 2.Socket对象的RemoteEndPoint. LocalEndPoint都是这个类型 3.属性Address: 使用IPv4表示的地址 4.属性Port:使用int表示的端口 2)类Socket: 这个类即可以用于作服务器端的开发,又可以作客户端的开发 构造方法: 参数 Ad

手机、ESP32单片机、MQTT服务器连接实验

实验目的:通过自己制作的手机APP,连接MQTT服务器,获取ESP32单片机的温湿度信息,控制ESP32单片机上的LED开关. 实验准备: 1.硬件:ESP32开发板(型号不限,esp01s也可以).LED灯.DH11温湿度传感器.面包板等 2.软件: (1)arduino软件,可以到官网https://www.arduino.cc/en/Main/Software下载. (2)App Inventor 2 集成版,可以到官网https://www.wxbit.com/下载.(解释一下:这个软件

Tip:outlook无法通过CAS服务器更新脱机通讯薄

故障现象 把hosts文件指向CAS服务器,下载通讯薄卡在进度界面,没有反应,也不报错. ======================================================= 故障分析 通过运行客户端autodiscover自动发现,可以找到OAB的虚拟目录地址https://mail.contoso.cn/OAB/627acf4f-05f5-4f31-b73f-22ffaccdcfa4,尝试在IE中访问该地址 如果访问未出现故障的CAS服务器的OAB地址https:/

java 网络编程 TCP协议 java 服务器和客户端 java socket编程

一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程:        先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接受消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求.客户端输入字符串后按回车键,向服务器发送数据.服务器读取数据后回复客户端数据.这次请求处理完毕,启动的线程消亡.如果客户端接收到 "OK" 之外的返回数据,会再次

服务器与客户端消息推送的原理

其实服务端与客户端实现消息推送的方式有几种: 1.客户端不断的查询服务器,检查新的内容,也就是所谓的pull或者轮询的方式: 2.客户端与服务器之间维持一个TCP/IP长连接(在HTTP1.1中,所有的请求都认为是长连接),服务器向客户端push: 3.当服务端有新内容的时候,发送一条类似短信的信令给客户端,客户端收到货从服务器下载新内容,也就是SMS的推送方式: 对于第一种方式有以下的缺点: 1.因为需要不断地轮询,所以手机会很耗电: 2.容易被系统杀死: 对于第二种方式: 我们首先来了解一下

运用MQTT-JMeter插件测试MQTT服务器性能

今天我们介绍XMeter团队带来的新版MQTT-JMeter插件,您可以更为方便地添加MQTT连接.发布.订阅取样器,构造组合的应用场景,例如背景连接.多发少收.少发多收,计算消息转发时延等.利用该插件,我们为EMQ成功实施了包括百万级并发连接在内的一系列测试场景,这里有详细的测试报告. 该插件发布在github,欢迎下载.使用并告诉我们您的意见建议. 下面介绍一下插件的使用方法. 安装 从github下载您需要的release版本, 解压mqtt–xmeter-jar-with-depende

服务器和客户端安全通信

在做app开发跟服务端通信时,必然要保证安全性,一般情况下都是加密来搞,那怎么做比较简单且安全呢:有几种办法,优缺点都有,我们来看看 1,简单点,明文传输,非登录态其实没啥好说的,看看登录态,用户登录后,服务器给客户端分配tokenid,类似pc端的sessionid一样,那么客户端后续请求服务器都要带上tokenid,服务器检查tokenid是否已经登录,然后检查权限等,如果认为已登录没啥问题就会执行正常的业务逻辑,因此这个tokenid很重要,除此之外,我们还需要对请求数据做签名,我们用不可

win8 下搭建svn(服务器和客户端)转载

win8 下搭建svn(服务器和客户端) 2012-05-08 15:38:47|  分类: 默认分类|举报|字号 订阅 环境:win8.vs11 .AnkhSVN 2.3.10838 released .TortoiseSVN 1.7.6 - 64bit 一.准备工作 1. Subversion服务器程序 先到官方网站上下载最新版本,http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFol

【转载】(一)基于阿里云的MQTT远程控制(Android 连接MQTT服务器,ESP8266连接MQTT服务器实现远程通信控制----简单的连接通信)

如果不了解MQTT的可以看这篇文章  http://www.cnblogs.com/yangfengwu/p/7764667.html http://www.cnblogs.com/yangfengwu/p/8026014.html 关于钱的问题,其实自己是花钱买的云服务,虽然自己现在能支付的起,但是呢为了尽量减少支出,自已还有好多好多文章要写,好多好多元器件要买,所以哈会在自己的淘宝上卖源码2元价格,一元捐出,一元自己留着当亲们支付云服务的费用了 如果看不懂也没关系,跟着做就可以了,做完以后您