最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

服务端主动发送数据回客户端在H5里的实现步奏

来源:懂视网 责编:小采 时间:2020-11-27 15:27:29
文档

服务端主动发送数据回客户端在H5里的实现步奏

服务端主动发送数据回客户端在H5里的实现步奏:我们知道,在Server Sent Event里,通过EventSource对象接收服务器发送事件的通知是有三个事件的,message, open, error这三种,今天就给大家演示一下服务端主动发送数据回客户端在H5里的实现步奏。Server Sent EventServer Sent
推荐度:
导读服务端主动发送数据回客户端在H5里的实现步奏:我们知道,在Server Sent Event里,通过EventSource对象接收服务器发送事件的通知是有三个事件的,message, open, error这三种,今天就给大家演示一下服务端主动发送数据回客户端在H5里的实现步奏。Server Sent EventServer Sent

我们知道,在Server Sent Event里,通过EventSource对象接收服务器发送事件的通知是有三个事件的,message, open, error这三种,今天就给大家演示一下服务端主动发送数据回客户端在H5里的实现步奏。

Server Sent Event

Server Sent Event通过EventSource对象接收服务器发送事件的通知. 有三个事件message, open, error

下面的代码演示了使用的方法

例子代码运行环境: node.js

代码

粘贴下面代码运行node index.js

//index.html
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>server-sent</title>
</head>
<body>
 <script>
 window.addEventListener("load",function () {
 let status = document.getElementById("status");
 let output = document.getElementById("output");
 let source;
 
 function connect() {
 source = new EventSource("stream");//与服务器端建立连接
 //鉴定message事件, 获取服务端发送的数据
 source.addEventListener("message", function (event) {
 output.textContent = event.data;
 }, false);
 //监听open事件, 判断连接是否进行中
 source,addEventListener("open", function (event) {
 status.textContent = '连接打开了';
 },false);
 //监听error事件, 处理连接错误的情况
 source.addEventListener("error", function (event) {
 if (event.target.readyState === EventSource.CLOSED) {
 source.close();
 status.textContent = '连接关闭了';
 } else {
 status.textContent = "连接关闭了!未知错误!";
 }
 }, false);
 }
 if(!!window.EventSource) {
 connect();
 } else {
 status.textContent = "不支持server-sent"
 }
 },false);
 </script>
 <span id="status">Connection closed!</span>
 <br>
 <span id="output"></span>
</body>
</html>

服务端代码

//index.js
const http = require('http');
const fs = require('fs');
http.createServer(function (req, res) {
 let interval,
 fileName,
 index = "./index.html";
 console.log(req.url);
 if(req.url === "/") {
 fileName = index;
 } else {
 fileName = "." + req.url;
 }
 
 if (fileName === "./stream") {//如果server sent event则设置相应头信息
 res.writeHead(200, {
 "Content-Type" : "text/event-stream",
 "Cache-Control" : "no-cache",
 "Connection": "keep-alive",
 })
 res.write("retry: 10000\n");//过10000秒重试
 res.write("data: " + (new Date()) + "\n\n");
 interval = setInterval(function () {
 res.write("data: " + (new Date()) + "\n\n");
 }, 1000);
 //监听close事件, 用于停止定时器
 req.connection.addListener("close", function () {
 clearInterval(interval);
 }, false);
 } else if (fileName === index) {
 //判断是否为页面请求, 并找到相应文件返回页面
 fs.exists(fileName, function (exists) {
 if (exists) {
 fs.readFile(fileName, function (error, content) {
 if (error) {
 res.writeHead(500);
 res.end();
 } else {
 res.writeHead(200, {"Content-Type" : "text/html"});
 res.end(content, "utf-8");
 }
 })
 } else {
 console.log(123);
 res.writeHead(404);
 res.end();
 }
 })
 } else {
 res.writeHead(404);
 res.end();
 }
}).listen(8080, "127.0.0.1");
console.log("at 8080");

相信看了这些案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

HTML5标签嵌套规则的详细介绍

浏览器兼容HTML5和CSS3的问题

html5做剪刀石头布效果的教程

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

服务端主动发送数据回客户端在H5里的实现步奏

服务端主动发送数据回客户端在H5里的实现步奏:我们知道,在Server Sent Event里,通过EventSource对象接收服务器发送事件的通知是有三个事件的,message, open, error这三种,今天就给大家演示一下服务端主动发送数据回客户端在H5里的实现步奏。Server Sent EventServer Sent
推荐度:
标签: 发送 数据 服务
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top