网络通识
#160
Replies: 2 comments
-
MQTT协议详解MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的发布/订阅消息传输协议,专为低带宽、高延迟或不稳定的网络环境设计。 基本概念MQTT的核心特点:
协议架构
核心特性1. 主题(Topic)
2. 服务质量(QoS)
3. 遗嘱消息(Last Will)
工作原理
PHP实现示例// 使用phpMQTT库(需先安装:composer require bluerhinos/phpmqtt)
require("phpMQTT.php");
// 创建MQTT客户端
$mqtt = new phpMQTT("broker.example.com", 1883, "phpClient");
// 连接Broker
if ($mqtt->connect()) {
// 订阅主题
$topics['home/+/temperature'] = array("qos" => 0, "function" => "procMsg");
$mqtt->subscribe($topics, 0);
// 发布消息
$mqtt->publish("home/livingroom/temperature", "22.5", 0);
// 保持连接处理消息
while($mqtt->proc()) { }
// 断开连接
$mqtt->close();
} else {
echo "连接失败";
}
// 消息处理函数
function procMsg($topic, $msg) {
echo "收到消息 [$topic]: $msg\n";
}应用场景MQTT特别适合以下场景:
优势与局限优势:
局限:
MQTT已成为物联网领域最主流的通信协议之一,被广泛应用于各种智能设备和云平台之间的通信。 |
Beta Was this translation helpful? Give feedback.
0 replies
-
HTTP的SSE(Server-Sent Events)介绍SSE(Server-Sent Events,服务器推送事件)是一种基于HTTP的服务器向客户端推送数据的技术。 基本概念SSE允许服务器单向地向客户端推送数据,具有以下特点:
工作原理
技术特点
与WebSocket对比
使用示例客户端代码(JavaScript)// 创建EventSource连接
const eventSource = new EventSource('/sse-endpoint');
// 监听消息
eventSource.onmessage = function(e) {
console.log('收到消息:', e.data);
};
// 监听特定事件
eventSource.addEventListener('update', function(e) {
console.log('更新事件:', e.data);
});
// 错误处理
eventSource.onerror = function(e) {
console.error('连接错误:', e);
};服务器端代码(PHP示例)// 设置SSE专用的头部
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');
// 禁用输出缓冲
while (ob_get_level()) ob_end_clean();
// 模拟持续发送数据
while (true) {
$data = ['time' => date('Y-m-d H:i:s'), 'value' => rand(1, 100)];
// 发送数据(格式必须符合SSE规范)
echo "event: update\n"; // 事件类型(可选)
echo "data: " . json_encode($data) . "\n\n";
// 刷新输出缓冲区
ob_flush();
flush();
// 暂停1秒
sleep(1);
// 检查连接是否仍然活跃
if (connection_aborted()) break;
}适用场景SSE特别适合以下场景:
注意事项
SSE提供了一种简单高效的服务器推送解决方案,是构建实时应用的轻量级选择。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
网络通识
Beta Was this translation helpful? Give feedback.
All reactions