概念 Sever-Sent Events(SSE) 可实现由服务端主动推送消息给客户端 特点: 基于 Http 协议由服务端向客户端发送消息,只能单向发送只支持文本消息当不通过 HTTP / 2 使用
Sever-Sent Events(SSE) 可实现由服务端主动推送消息给客户端
特点:
事件流仅仅是一个简单的文本数据流,文本应使用 UTF-8 格式编码。
每条消息后面都由一个空行作为分隔符。
event: myevent
data: xxxx
data: yyyy
data: zzzz
: this is just a annotation
DOCTYPE html><html><head> <meta charset="UTF-8"> <title>SSE Demotitle>head><body> <div id="messages">div> <script> const source = new EventSource('sse.PHP'); // 建立连接 source.onopen = function () { var messages = document.getElementById('messages'); messages.innerHTML += 'connection is established' + '
'; }; // ping 事件类型消息 source.addEventListener("ping", function(event) { var messages = document.getElementById('messages'); messages.innerHTML += 'ping: ' + event.data + '
'; }); // message 事件类型消息 source.onmessage = function(event) { var messages = document.getElementById('messages'); messages.innerHTML += event.data + '
'; }; // 连接错误 source.onerror = function (event) { var messages = document.getElementById('messages'); var data = 'connection state: ' + eventSource.readyState + ', error: ' + event messages.innerHTML += data + '
'; }; script>body>html>
php// 禁用缓存header("Cache-Control: no-cache");// 指明 MIMIheader("Content-Type: text/event-stream");// 使用持久连接header('Connection: keep-alive');while (true) { // 发送 ping 事件类型消息 echo "event: ping\n"; echo 'data: {"time": "' . date('Y-m-d H:i:s'). '"}'; echo "\n\n"; if (time() % 5 === 0) { // 未指定事件类型,默认为 message 事件类型 echo 'data: This is a message at time ' . date('Y-m-d H:i:s') . "\n\n"; } ob_end_flush(); flush(); sleep(1);}
来源地址:https://blog.csdn.net/xchenhao/article/details/129555747
--结束END--
本文标题: Sever-Sent Events(SSE) 服务器向 Web 客户端推送实战示例
本文链接: https://lsjlt.com/news/422430.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0