SSE:服务器发送事件

详情查看

SSE:服务器发送事件

概述

传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“通知”,这要比浏览器按时向服务器查询(polling)更有效率。

node代码 server.js
var http = require("http");

http.createServer(function (req, res) {

  var fileName = "." + req.url;

  if (fileName === "./stream") {
    res.writeHead(200, {
      "Content-Type": "text/event-stream",
      "Cache-Control": "no-cache",
      "Connection": "keep-alive"
    });
    res.write("retry: 10000\n");
    res.write("event: connecttime\n");
    res.write("data: " + (new Date().toISOString()) + "\n\n");
    res.write("data: " + (new Date().toISOString()) + "\n\n");

    interval = setInterval(function () {
      res.write("data: " + (new Date().toISOString()) + "\n\n");
    }, 5000);

    req.connection.addListener("close", function () {
      clearInterval(interval);
    }, false);
  }
}).listen(80, "127.0.0.1");
html代码 index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>SSE</title>
</head>
<body>
<div id="result"></div>
<script>
  if (!!window.EventSource) {
    var source = new EventSource('http://127.0.0.1/stream');
    source.addEventListener('open', open);
    source.addEventListener('connecttime', connecttime); // 监听自定义事件
    source.addEventListener('message', message); // 监听默认事件
    source.addEventListener('error', error);

    function open() {
      console.log('SSE open', '连接已建立');
    }

    function message(event) {
      console.log('SSE message', event.data);
    }

    // 自定义事件
    function connecttime(event) {
      console.log('SSE connecttime', event.data);
    }

    function error(ev) {
      console.log('SSE error', '错误了');
    }
  }
</script>
</body>
</html>
结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值