详解 HTML5 服务器发送事件(Server-Sent Events)

news2024/11/16 13:35:48

HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。

EventSource 是单向通信的(是服务器向客户端的单向通信,客户端接收来自服务器的事件流)、基于 HTTP 协议(EventSource 是基于标准的 HTTP/HTTPS 协议),使用长轮询或类似的机制,但并不是完全双向的通信、文本数据传输(通常用于传输文本数据,如服务器推送的消息或事件)、自动重连(当连接中断,EventSource 会自动尝试重新连接,不需要手动处理重连)。

使用场景

适合需要从服务器获取实时信息的应用,例如股票行情或新闻推送。

使用方式

1、直接使用浏览器自带 EventSource。

缺点:不可以自定义参数且只能 get 方式请求,无法向服务端传递请求参数,比如请求头中携带 token。

 if (window.hasOwnProperty("EventSource")) {
    // url 接口
    let source = new EventSource(
      "https://api.baichuan-ai.com/v1/chat/completions"
    );
    // 当发生错误
    source.onerror = function () {
      console.log("error");
    };
    // 当通往服务器的连接被打开
    source.onopen = function () {
      console.log("连接成功");
    };
    // 当接收到消息
    source.onmessage = function (event) {
      console.log("服务器推送数据", event.data);
    };
  }

2、使用 EventSourcePolyfill,解决使用 EventSource 无法在 header 中传参。

缺点:只能 get 请求且无法向服务端传递请求参数。

  import { EventSourcePolyfill } from "event-source-polyfill";
  // url 接口
  let source = new EventSourcePolyfill(
    "https://api.baichuan-ai.com/v1/chat/completions",
    {
      headers: {
        Authorization: "token",
      },
    }
  );
  // 当发生错误
  source.onerror = function () {
    console.log("error");
  };
  // 当通往服务器的连接被打开
  source.onopen = function () {
    console.log("连接成功");
  };
  // 当接收到消息
  source.onmessage = function (event) {
    console.log("服务器推送数据", event.data);
  };

3、使用 fetchEventSource,实现 post 请求方式

import { fetchEventSource } from "@microsoft/fetch-event-source";
 let es = new fetchEventSource(
    "https://api.baichuan-ai.com/v1/chat/completions",
    {
      headers: {
        Authorization: "token 值",
        withCredentials: true,
        "Content-Type": "application/json",
      },
      method: "post",
      // 参数
      body: JSON.stringify({
        username: "LIIIIII",
        password: "123456",
      }),
      onmessage(event) {
        console.log(event.data);
      },
      onerror() {
        console.log("erroe");
      },
    }
  );

以上就是关于 HTML5 服务器发送事件(Server-Sent Events)使用教程就介绍到这了。

详解 HTML5 服务器发送事件(Server-Sent Events)的使用教程-码云笔记HTML5服务器发送事件(server-sent event)允许网页获得来自服务器的更新。 EventSource是单向通信的(是服务器向客户端的单向通信,客户端接收来自服务器的事件流)、基于HTTP协议(EventSource是基于标准的HTTP/HTTPS协议),使用长轮...icon-default.png?t=N7T8https://mybj123.com/21968.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1712796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提升B端图表设计技能:教程分享

图表是数据可视化的常用表现形式,是对数据的二次加工,可以帮助我们理解数据、洞悉数据背后的真相,让我们更好地适应这个数据驱动的世界。本期就来带大家学习图表的设计及构成,帮助大家更好的理解图表设计。 设计教程源文件http:/…

【vscode篇】1-VScode设置语言为中文,2-解决中文注释乱码问题。

设置语言为中文 在前端开发中,Visual Studio Code(简称vscode)是一个非常好用的工具,但第一次打开vscode会发现界面为英文,这对很多开发者来说会很不友好(比如我),把界面设置成中文只需要安装一个插件即可&…

博途S7-1200/1500PLC区域长度错误

S7-1200/1500PLC故障有时提示PLC区域长度错误,如下图所示 1、区域长度错误 未完...

08.tomcat多实例

在加两个tomcat实例 [rootweb01 ~]# ll apache-tomcat-8.0.27.tar.gz -rw-r--r-- 1 root root 9128610 10月 5 2015 apache-tomcat-8.0.27.tar.gz [rootweb01 ~]# tar xf apache-tomcat-8.0.27.tar.gz [rootweb01 ~]# cp -a apache-tomcat-8.0.27 tomcat_8081 [rootweb01 ~…

性能测试(一)—— 性能测试理论+jmeter的使用

1.性能测试介绍 定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。 由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试完…

便民社区信息小程序源码系统 功能强大 带生活电商+求职招聘功能 带完整的安装代码包以及搭建教程

系统概述 便民社区信息小程序源码系统是一款集多种功能于一身的综合性平台。它旨在为用户提供便捷的生活服务,满足社区居民的各种需求。无论是购物、求职还是获取社区信息,都能在这个平台上得到满足。该系统采用先进的技术架构,确保系统的稳…

sendmail发送邮件配置详解?如何正确设置?

sendmail发送邮件如何保障安全?AokSend有何安全措施? 为了确保sendmail发送邮件的高效性和安全性,正确配置是至关重要的。本文将详细介绍sendmail发送邮件的配置步骤,并探讨如何保障sendmail发送邮件的安全性。同时,我…

排序进阶----插入排序,希尔排序

各位看官们好,接下来鄙人想与大家分享的实现被称为六大排序之一的插入排序。其实关于这六大排序在我们最开始就已经接触过了。我们在最开始学习c语言的时候,我们要学习到其中之一的冒泡排序。虽然现在看起来冒泡排序确实是没有太大的实际效果&#xff0c…

ROS无人机追踪小车项目开发实战 | 第四届中国智能汽车创新大会圆满结束

2024年5月26日,阿木实验室在深圳第四届中国智能汽车创新大会上,开展的《Prometheus开源平台-ROS无人机追踪小车项目开发实战课》圆满结束。 该实战课从初学者的角度出发,通过实践性讲解和开发,使开发者们系统地学习了硬件系统架构…

无需开孔,安全美观:低功耗微波雷达模块开启宠物喂食器新未来

在快节奏的现代生活中,宠物已成为许多家庭的重要成员。然而,忙碌的主人常常为如何确保宠物按时进食而困扰。近年来,智能家居技术飞速发展,宠物喂食器也逐渐智能化,极大地方便了宠物主人。今天,我们要介绍的…

读书 |《人工智能产品经理-AI时代PM修炼手册》

《人工智能产品经理——AI时代PM修炼手册》by张竞宇,read at 2020.04 这是今年准备面试时看的一本书了。全书从宏观层面介绍了AIPM应具备的的视野范围、一套较完备的工作方法论。AI领域的常识、日常工作没有超出这本书的范畴,是一本合格的入门科普书籍。…

Centos安装nvm管理node版本(让安装变得可控又快捷)

Centos安装nvm管理node版本(让安装变得可控又快捷) 没有找到一个对的人,有可能是你没有走对那条路,也有可能是你没有睁开眼睛,而更大的可能是,你根本就没有出发去找。 安装说明 nvm安装目录:/us…

AI 画图真刺激,手把手教你如何用 ComfyUI 来画出刺激的图

目前 AI 绘画领域的产品非常多,比如 Midjourney、Dalle3、Stability AI 等等,这些产品大体上可以分为两类: 模型与产品深度融合:比如 Midjourney、Dalle3 等等。模型与产品分离:比如 SD Web UI、ComfyUI 等等。 对于…

ms sql server 2008数据库跨服务器迁移方法

一、直接拷贝数据法: 1、打开sql server management studio,选中要迁移的数据库; 2、先在源数据库里点 “脱机”,等到脱机成功后,直接到目录里(默认路径是C:\Program Files\Microsoft SQL Server\MSSQL10.MSS…

LabVIEW异步编程概述

LabVIEW异步编程是一种在图形化编程环境中处理并行任务的方法。通过异步执行,可以提高程序的响应速度和资源利用效率,使得多个任务可以独立进行而不互相干扰。 原理 LabVIEW异步编程的核心在于使用异步调用节点(Asynchronous Call By Refer…

AI绘画(Stable Diffusion)喂饭级教程-第2篇(SD大模型详解)

SD大模型的概念及基础知识 先做一个比喻 如果SD是一个画师,那么大模型就是画师的大脑! 就是可惜,这个大脑有点轴,它只能想象出自己喜欢的画面。 比如你用了一个二次元的大脑,它想出来的画面就是这样的: …

嵌入式进阶——EEPROM读写

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 设置EEPROM读写String字符串官方示例 EEPROM是一种可擦写可编程只读存储器(Electrically Erasable Programmable Read-…

源达投顾的客户服务质量怎么样?

在金融服务行业中,客户服务质量是衡量一个公司成功与否的关键因素之一。源达投顾作为一家专业的投资顾问机构,其客户服务质量一直备受关注。那么,源达投顾的客户服务质量怎么样? 一、客户满意度调查方法 为了全面、客观地了解源…

SurfaceView与TextureView的绘制渲染

SurfaceView与TextureView的绘制渲染 一.SurfaceView1.SurfaceView的初始化1.1 SurfaceControl的创建1.1.1 BLASTBufferQueue与SurfaceControl的绑定 1.2 Surface初始化 2.SurfaceHolder的回调与绘制2.1 画布的获取2.2 矩形的绘制2.3 绘制的提交 二.TextureView1.TextureView的…

一文搞懂Java8 Lambda表达式、方法引用

Lambda表达式介绍 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。通过Lambda表达式,可以替代我们以前经常写的匿名内部类来实现接口。Lambda表达式本质是一个匿名函数; 体验Lambda表达式 我们通过一个小例子来体验下L…