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

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

Server Sent Event

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

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

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

代码

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

//index.htmlnbsp;html>        server-sent      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);    Connection closed!  
  

登录后复制

服务端代码

//index.jsconst 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");

登录后复制

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

相关阅读:

node.js

node.js

node.js

以上就是服务端主动发送数据回客户端在H5里的实现步奏的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3194704.html

(0)
上一篇 2025年4月1日 02:03:55
下一篇 2025年4月1日 02:04:04

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • H5的多线程如何实现Web Worker

    很多人问过我,h5的多线程如何实现web worker的?当我们说到这个问题的时候首先你需要知道,什么是web worker,那么今天就来给大家解答下这个问题。 将JavaScript代码交给Web Worker在后台执行时,页面就可以在J…

    编程技术 2025年4月1日
    100
  • h5里js和servlet实现文件上传的实现步骤

    这次教大家的是在h5里如何用js和servlet来实现servlet,不过有一个前提条件,必须要是h5和jsp3.0版本,因为用到了新属性,获取file对象和后台得到part对象。 下面给大家看一个案列 前台jsp nbsp;html PU…

    编程技术 2025年4月1日
    100
  • H5做出手机摇一摇功能的实现步骤

    今天教大家用html5来在网页里实现一个很炫酷的功能,手机摇一摇。如果你之前做过手机端的开发,可能对于这样的功能非常了解。但是下面,我们将在web上首次实现这个功能。 方向事件deviceorientation 该事件实在设备方向发生变化时…

    编程技术 2025年4月1日
    100
  • H5中的弹窗无法用webview弹出怎么解决

    我们偶尔会用到这样一种bug,虽然使用了webview,但是还无法吊起h5中的弹窗。那么怎么解决这个问题呢?我们来看一下。 问题: webview无法吊起H5中的弹窗。 解决方法: 如果是fragment,必须使用getactivity()…

    编程技术 2025年4月1日
    100
  • 巧用HTML5给按钮背景设计不同的动画

    如何巧用html5设计按钮背景不同动画特效,在该特效中,当鼠标滑过按钮时,使用css3   animation 来动画   background-size  和  background-position  属性,来实现各种背景动画效果。本文…

    2025年4月1日 编程技术
    100
  • HTML5打开手机扫码功能及优缺点_html5教程技巧

    这篇文章主要介绍了html5打开手机扫码功能及优缺点的相关html5资料,对html5感兴趣的朋友可以参考下 1.解决的问题: 1.能够在微博客户端呼起摄像头扫描二维码并且解析; 2.能够在原生浏览器和微信客户端中扫描二维码并且解析; 2.…

    编程技术 2025年4月1日
    100
  • HTML5 Ajax文件上传进度条如何显示

    这篇文章主要介绍了html5 ajax文件上传文件上传是如何显示的,基于原生html5实现,不需要falsh支持,进度可以自定义显示,控制灵活,对html5上传进度条感兴趣的小伙伴们可以参考一下 原本打算使用jquery插件进行异步文件上传…

    编程技术 2025年4月1日
    100
  • HTML5的WEB界面中meta实列详解

    这次给大家带来html5的web界面中meta实列详解,使用html5的web界面中meta的注意事项有哪些,下面就是实战案例,一起来看一下。 注意事项 meta标签是HTML语言HEAD区的一个辅助性标签。 meta常用于定义页面的说明,…

    编程技术 2025年4月1日
    100
  • h5的定时器怎样实现进度条功能

    这次给大家带来h5的定时器怎样实现定时器功能,h5的定时器实现进度条功能的定时器有哪些,下面就是实战案例,一起来看一下。 在requestAnimationFrame出现之前,我们一般都用setTimeout和setInterval,那么h…

    编程技术 2025年4月1日
    100
  • 怎样用H5预览PDF格式的文档

    这次给大家带来怎样用h5预览pdf格式的文档,h5预览pdf格式文档的注意事项有哪些,下面就是实战案例,一起来看一下。 简介 PDF.js is a Portable 注意事项 Format (PDF) viewer that is bui…

    编程技术 2025年4月1日
    100

发表回复

登录后才能评论