mqtt 与 socket.io 初识比较

2,632 阅读3分钟

一、mqtt与socket介绍

  1. 参考:

mqtt-vs-socket-io-on-network-bandwidth-usage

mqtt与socket的区别是什么

  1. 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消息的加密

  1. 一些通讯系统的mqtt消息机密,在前端收到的消息实际上就是普通的16进制,在前端传输的东西,到底要交给前端去解密,不能说传输的信息多安全。
  2. 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)
  1. socket.io 如果消息要做加密的话,网上的一些方案说前端可以用AES加密。

三、Sec-WebSocket-Accept与Sec-WebSocket-Key

  1. Sec-WebSocket-Accept与Sec-WebSocket-Key 只是为了确定打开的是 websocket连接,不提供安全性

image.png

image.png