广告
返回顶部
首页 > 资讯 > 服务器 >EventSource学习
  • 303
分享到

EventSource学习

学习服务器网络 2023-09-21 15:09:23 303人浏览 独家记忆
摘要

一、EventSource的基本概念 EventSource是HTML5中的一种新的api,用来实现服务器端向客户端推送事件。相比于常规的轮询方式,EventSource可以实现更加高效、低延迟的数据

一、EventSource的基本概念

EventSource是HTML5中的一种新的api,用来实现服务器端向客户端推送事件。相比于常规的轮询方式,EventSource可以实现更加高效、低延迟的数据传输。

它的基本使用方式是,首先在客户端创建一个EventSource对象,然后向指定的服务器端URL发送一个Http请求。此时,服务器端需要支持EventStream格式,即Content-Type为text/event-stream。一旦客户端收到了这个请求的响应,它就会开始监听服务器端的事件,并将事件流动态地展现在网页中。

EventSource主要有以下几个特性:

实时性。EventSource能够实现实时地数据传输,可以在服务器端有新事件时立即向客户端推送,并自动进行展示。

低延迟。由于EventSource采用长连接的方式进行传输,相比于普通的轮询方式,它能够更加高效地传输数据。

易用性。EventSource是一种非常易用的API,只需要在客户端创建一个EventSource对象,指定服务器端的URL,即可进行监听并展示事件。

兼容性。EventSource能够同时兼容websocket和长轮询等方式,具备很好的兼容性,可以在各种不同的场景下使用。

二、EventSource的具体应用场景

EventSource主要用来实现服务器端向客户端实时推送事件,它在WEB应用中的应用场景非常广泛。下面列举几个具体的应用场景:

即时聊天。在即时聊天应用中,EventSource可以实现实时向客户端推送新消息,从而保证聊天效果的实时性和流畅性。

数据监控。在数据监控应用中,EventSource可以实时向客户端推送最新的监控数据,从而让用户及时掌握系统状态。

消息提示。在消息提示应用中,EventSource可以实时向客户端推送最新的通知信息,让用户不会错过任何重要消息。

广告推送。在广告推送应用中,EventSource可以实时向客户端推送最新的广告信息,从而提高广告的投放效果。

三、EventSource的优缺点

EventSource作为一种新的Web API,具备自身的优缺点:

1、优点

(1)实时展示:EventSource能够实现实时展示服务器端的事件,相比于常规的轮询方式,它能够更加高效、低延迟的展示数据。

(2)易用性:EventSource是一种非常易用的API,只需要在客户端创建一个EventSource对象,指定服务器端的URL,即可进行监听并展示事件。

(3)兼容性良好:EventSource能够同时兼容WebSocket和长轮询等方式,具备很好的兼容性,可以在各种不同的场景下使用。

(4)网络带宽节省:EventSource采用长连接的方式进行数据传输,相比于普通的轮询方式,能够节省大量的网络带宽。

2、缺点

(1)一次性消息:EventSource只能一次性地向客户端推送一条消息,而不能像WebSocket那样实现双向通讯。

(2)不支持二进制数据传输:EventSource只能传输文本数据,不能传输二进制数据,这在某些场景下可能存在一定的局限性。

(3)不支持重连:如果网络连接不稳定,或者服务器端关闭EventStream连接,客户端需要重新连接才能继续监听事件。

四、如何使用EventSource

使用EventSource也比较简单,只需要创建一个EventSource对象并指定服务器端的URL即可。下面是一个简单的使用示例:

var eventSource = new EventSource("/events");eventSource.onmessage = function(event) {  console.log("Received event: " + event.data);};

在这个示例中,创建了一个EventSource对象,并指定服务器端的URL为"/events"。同时,还注册了一个onmessage事件回调函数,在每次收到服务器端推送的事件时,会打印出事件数据。

在服务器端,需要确保能够接收和处理EventStream格式的HTTP请求。下面是一个简单的node.js的Express应用示例:

const express = require('express');const app = express();app.get('/events', function(req, res) {  res.set({    'Content-Type': 'text/event-stream',    'Cache-Control': 'no-cache',    'Connection': 'keep-alive'  });  setInterval(function() {    res.write('data: ' + new Date().toISOString() + '\n\n');  }, 1000);});app.listen(3000, function() {  console.log('Example app listening on port 3000!');});

在这个示例中,创建了一个Express应用,并通过路由"/events"来处理EventSource请求。其中,将响应的Content-Type设置为text/event-stream,表示返回的数据格式为EventStream。同时,通过设置Cache-Control和Connection实现长连接的功能。在每秒钟向客户端推送一个带时间戳的事件。

五、总结

本文主要介绍了EventSource的基本概念、具体应用场景、优缺点以及使用方法。尽管EventSource在某些场景下可能存在一定的局限性,但它仍然是一种非常强大的前端Web API,能够实现实时、低延迟的数据传输,具备很好的兼容性和易用性。在实际应用中,需要针对具体的场景进行合理使用,从而发挥最大的效果。

来源地址:https://blog.csdn.net/qq_27561019/article/details/131201775

--结束END--

本文标题: EventSource学习

本文链接: https://www.lsjlt.com/news/414264.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • EventSource学习
    一、EventSource的基本概念 EventSource是HTML5中的一种新的API,用来实现服务器端向客户端推送事件。相比于常规的轮询方式,EventSource可以实现更加高效、低延迟的数据...
    99+
    2023-09-21
    学习 服务器 网络
  • 机器学习:无监督学习
    文章目录 线性学习方法聚类ClusteringKmeansHAC 分布表示降维PCAMatrix FactorizationManifold LearningLLELaplacian Eigenmapst-SEN ...
    99+
    2023-08-30
    机器学习 无监督学习
  • 【李沐】动手学深度学习 学习笔记
    目录 【内容介绍】动手学深度学习-基于pytorch版本【脉络梳理】预备知识数据操作数据预处理线性代数矩阵计算自动求导 线性神经网络线性回归深度学习的基础优化算法线性回归的从零开始实现线...
    99+
    2023-08-31
    深度学习 学习 python
  • Java学习星球,Java学习路线
    目录 一、Java学习路线二、学习计划三、为何会有Java学习星球?四、加入星球后,你可以得到什么?五、如何加入Java学习星球?六、打卡挑战 大家好,我是哪吒,一个靠着热情攀登至C...
    99+
    2023-08-31
    java 学习 开发语言
  • jbpm学习
    转http://linliangyi2007.javaeye.com/blog/176345本片文章,我们将从业务流程的设计开始,通过带领大家完成一个完整工作流的程序设计,来学习jPDL的使用。业务流程设计这里我们实现一个相对简化的公司借款...
    99+
    2023-06-03
  • Python 学习
    第一次学习python查阅的资料一,熟悉基本在正式介绍python之前,了解下面两个基本操作对后面的学习是有好处的:1)基本的输入输出 可以在Python中使用+、-、*、/直接进行四则运算。11+3*3查看全部10(2)导入模块 使用im...
    99+
    2023-01-31
    Python
  • 学习oracle
    下载oracle网址http://www.oracle.com/technetwork/index.html根据你的机型选择下载安装不同版本,首先你得注册一个oracle账户才能下载。官网EX Editio...
    99+
    2022-10-18
  • xtrabackup学习
    xtrabackup安装 https://www.percona.com/downloads/XtraBackup/LATEST/ 下载相应版本包  wget ftp://rpmfind...
    99+
    2022-10-18
  • redis学习
    邻近年底,决定辞职,自认为即使没有找到很满意的工作,也应该不会差。事实是有点自信回头,虽然找到了工作,但途中也受到了打击,不得不承认学习的激情不知何时,渐渐熄灭。直到认识一个女生,她让我对未来充满着信心。曾今何时,也在这写过一些...
    99+
    2021-09-30
    redis学习
  • nfs学习
    一、实验要求    (1) nfs server导出/data/application/web;    (2) nfs cli...
    99+
    2022-10-18
  • Oracle学习
    001——在现有的表上新建表Create table t2as select ename name,sal salary from emp;当t2诞生时就会有子查询中所查出的数据。如果想改变列的名...
    99+
    2022-10-18
  • OSPFv3学习
     OSPF是一种链路状态路由协议。它具有标准开放、收敛迅速、无环路、便于层级化设计等众多优点。IPv4网络中广泛使用的OSPFv2协议由于在报文内容、运行机制等方面与IPv4地址联系得过于紧密,大大制约了它的可扩展性和适应性。在IPv6环...
    99+
    2023-01-31
  • Python学习
    Python是创始人吉多•范罗苏姆(Guido van Rossum)在1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,而在给自己新创造的计算机语言起名字的时候,由于其是,自于七十年代风靡全球的英国六...
    99+
    2023-01-31
    Python
  • 学习python
    亲爱的朋友:     欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着python越来越流行,资料也越来越多,...
    99+
    2023-01-31
    python
  • 【数据科学系统学习】机器学习算法 #
    本篇内容为《机器学习实战》第 6 章 支持向量机部分程序清单。所用代码为 python3。 支持向量机优点:泛化错误率低,计算开销不大,结果易解释。 缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题。适用数据...
    99+
    2023-01-31
    算法 机器 科学
  • Neo4j/cypher学习笔记与学习建议
    简介 本笔记的主要内容是 cypher 查询语言的编写与使用。 笔记主要整理自w3cschool上的neo4j教程以及Neo4j中文网所提供的cypher中文文档,此外还包括少量从其他个人博客与官方手册中整理的内容。 注意:上面所说的”c...
    99+
    2019-02-12
    Neo4j/cypher学习笔记与学习建议
  • oracle 函数学习 Oracle10g学习系列(7)
    Oracle函数有字符函数、数学函数、日期函数和转换函数。我只了解了字符函数和数学函数。一、字符函数:lower(char)  将字符串转化为小写的格式SQL> select lo...
    99+
    2022-10-18
  • 深度学习&故障诊断初学者 - 学习路线
    针对该领域初学者,经常有人一头雾水,不知如何学习,因此本文提供了一个学习路线 注:以下路线适合使用深度学习做故障诊断的初学者(建议使用Python、pytorch) 深度学习+故障诊断学习路线 ...
    99+
    2023-09-02
    python 人工智能 深度学习
  • 《学习Java分布式:如何记录学习笔记提升学习效率?》
    学习Java分布式:如何记录学习笔记提升学习效率? Java是一种流行的编程语言,它可以用于开发各种应用程序,包括分布式系统。学习Java分布式是学习Java编程的重要部分,但是如何记录学习笔记以提高学习效率是一个值得探讨的问题。在本文中,...
    99+
    2023-07-27
    教程 分布式 学习笔记
  • Python学习—列表练习
    1.【项目:大奖赛计分】   在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。  【项目扩展1(选做)】大奖赛编的计分程序,成绩在0-1...
    99+
    2023-01-31
    列表 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作