一、mqtt与socket介绍
- 参考:
mqtt-vs-socket-io-on-network-bandwidth-usage
- mqtt与socket的区别
socket是对tcp/ip协议族的封装的接口,可以通过socke操作tcp链接。Socket连接可以指定不同的传输层协议,即TCP或UDP,所以当采用TCP建立连接时,该Socket连接就视为一个TCP连接。 mqtt协议是应用层协议。 mqtt与socket的区别 1、mqtt协议是为工作在低带宽,不可靠网络的远程传感器和控制设备通讯而设计的协议,而Socket则是为了浏览器与服务器全双工通信的一种协议。 2、mqtt是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分,Socket是HTML5一种新的协议。 3、mqtt是一个基于客户端服务器的消息发布,订阅传输协议,mqtt协议是轻量,简单,开放和易于实现,这些特点使它适用范围非常广泛。
二、关于mqtt与socket.io消息的加密
- 一些通讯系统的mqtt消息机密,在前端收到的消息实际上就是普通的16进制,在前端传输的东西,到底要交给前端去解密,不能说传输的信息多安全。
- 16机制解密方法,中文可能需要转成utf-8来解密;
function hex2str(hex) {
var trimedStr = hex.trim();
var rawStr = trimedStr.substr(0,2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
var len = rawStr.length;
if(len % 2 !== 0) {
alert("Illegal Format ASCII Code!");
return "";
}
var curCharCode;
var resultStr = [];
for(var i = 0; i < len;i = i + 2) {
curCharCode = parseInt(rawStr.substr(i, 2), 16);
resultStr.push(String.fromCharCode(curCharCode));
}
return resultStr.join("");
}
var hex="32be010043532f7463686174315f643261626637613330385f342f4a535f32363331613633303431306436316361396333362f6b665f393235355f3134363330333630343838313400047b226d6574686f64223a226f6e507265646963744d657373616765222c22706172616d73223a5b226b665f393235355f49534d45393735345f31363139363634343536383430222c226b665f393235355f49534d45393735345f677565737438433044414639312d383744312d3844222c223131225d7d"
hex2str(hex)
- socket.io 如果消息要做加密的话,网上的一些方案说前端可以用AES加密。
三、Sec-WebSocket-Accept与Sec-WebSocket-Key
- Sec-WebSocket-Accept与Sec-WebSocket-Key 只是为了确定打开的是 websocket连接,不提供安全性