首页 > 其他分享 >sse 浏览器端技术使用,Server-Sent Events ,EventSource,来建立长连接保持与服务端的通讯

sse 浏览器端技术使用,Server-Sent Events ,EventSource,来建立长连接保持与服务端的通讯

时间:2024-12-19 21:24:25浏览次数:4  
标签:res Server EventSource SSE 服务器 服务端 客户端

Server-Sent Events (SSE) 是一种允许服务器向客户端推送更新的技术。它使用 HTTP 协议,通过一个持久的 HTTP 连接,服务器可以在任何时间发送新的事件到客户端。SSE 通常用于实时更新,如股票价格、新闻更新等。

以下是一个简单的 SSE 使用示例:

服务器端 (Node.js + Express)

const express = require('express');
const app = express();

app.get('/events', (req, res) => {
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');

  // 模拟实时数据更新
  setInterval(() => {
    res.write(`data: ${new Date().toISOString()}\n\n`);
  }, 1000);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

客户端 (HTML + JavaScript)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>SSE Example</title>
</head>
<body>
  <h1>Server-Sent Events Example</h1>
  <div id="messages"></div>

  <script>
    // 创建一个新的 EventSource 实例
    const eventSource = new EventSource('/events');

    // 监听 message 事件
    eventSource.onmessage = function(event) {
      const message = document.createElement('p');
      message.textContent = `Message from server: ${event.data}`;
      document.getElementById('messages').appendChild(message);
    };

    // 监听 open 事件
    eventSource.onopen = function() {
      console.log('Connection to server opened.');
    };

    // 监听 error 事件
    eventSource.onerror = function(error) {
      console.error('Error:', error);
    };
  </script>
</body>
</html>

解释

  • 服务器端:创建一个 Express 服务器,监听 /events 路由。当客户端连接到这个路由时,服务器会设置响应头以启用 SSE,并通过 setInterval 每秒发送一个新的事件(当前时间)。
  • 客户端:创建一个 EventSource 实例连接到服务器的 /events 路由。通过监听 message 事件,客户端可以接收到服务器发送的更新,并将这些更新显示在页面上。

注意事项

  • SSE 使用 HTTP 协议,因此它不支持跨域请求,除非服务器配置了 CORS。
  • SSE 连接是持久的,直到客户端或服务器关闭连接。
  • SSE 不支持双向通信,如果需要双向通信,可以考虑使用 WebSocket。

通过这些示例,你可以看到如何使用 SSE 在服务器和客户端之间建立持久连接,并实时推送数据。

标签:res,Server,EventSource,SSE,服务器,服务端,客户端
From: https://www.cnblogs.com/jocongmin/p/18617930

相关文章

  • Qt程序只能连接回环TCP Server服务端,无法连接其他IP的TCP Server服务端(已解决)
    .尝试解决无法连接下位TCP服务器的问题:(解决)在main函数中直接连接——》无效使用纸飞机客户端连接——》正常在main函数中连接纸飞机搭建的回环地址TCP服务——》成功在main函数中连接纸飞机搭建的192.166.100.200(以太网复用本机IP)——》失败新建Qt程序重试上面步......
  • workman服务端开发模式-应用开发-总架构逻辑说明
    一、后台管理端(操作页面端)    管理员用浏览器打开页面管理端后,页面管理端会自动检测,如果本地cookie不存在的情况下,跳转到登录页面,如果本地cookie存在的情况下,跳转到首页。登录的情况下,就不说,后面在业务架构里面会说明的。    在登录页面输入邮箱账号、密......
  • nacos兼容sqlserver数据库
    源码连接:wanqiu/nacos-datasource-support1、最外层pom.xml添加驱动:<dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>12.6.0.jre8</version></dependency>2......
  • Windows Server 2022 集群服务器技术提供了一种可靠的方式来提高业务连续性、增强系统
    WindowsServer2022集群服务器简介什么是WindowsServer2022集群服务器?WindowsServer2022集群服务器是一种由多个物理或虚拟服务器组成的系统,这些服务器通过网络连接形成一个群集(Cluster)。群集中的服务器协同工作,共同提供高可用性、负载均衡、灾难恢复等功能。WindowsS......
  • 在 Windows Server 环境中,DMSA 通常指的是 Delegated Managed Service Account(委派托
    在WindowsServer环境中,DMSA通常指的是DelegatedManagedServiceAccount(委派托管服务账户)。这是在WindowsServer中用来管理服务账户的一种特殊类型的托管账户。托管服务账户(ManagedServiceAccounts,MSA)是WindowsServer中的一种账户类型,用于运行服务和应用程序,而不......
  • 在 Windows Server 环境中(DMSA)  Dynamic Memory Support Architecture(动态内存支持架
    在WindowsServer环境中 DynamicMemorySupportArchitecture(动态内存支持架构),特别是在Hyper-V虚拟化环境中。动态内存支持架构(DMSA)在Hyper-V中的作用在Hyper-V虚拟化平台中,动态内存(DynamicMemory)是一个重要的功能,它能够根据虚拟机的实时负载动态调整内存的分配,以......
  • Linux安装sql server2022的流程步骤
    安装必要的工具sudoyuminstall-ywgetcurl下载并导入MicrosoftGPG密钥sudocurl-shttps://packages.microsoft.com/keys/microsoft.asc|sudorpm--import-注册SQLServer2022存储库sudocurl-o/etc/yum.repos.d/mssql-server-2022.repohttps://packages.m......
  • webserver log日志系统的实现
    参考博客:https://blog.csdn.net/weixin_51322383/article/details/130474753https://zhuanlan.zhihu.com/p/721880618阻塞队列blockqueue1、阻塞队列的设计流程是什么样的它的底层是用deque进行管理的阻塞队列主要是围绕着生产者消费者模式进行多线程的同步......
  • Mysql连接报错:1130-host ... is not allowed to connect to this MySql server如何处
    这个问题是因为在数据库服务器中的mysql数据库中的user的表中没有权限(也可以说没有用户),下面将记录我遇到问题的过程及解决的方法。在搭建完LNMP环境后用Navicate连接出错遇到这个问题首先到mysql所在的服务器上用连接进行处理1、连接服务器:mysql-uroot-p......
  • Windows Server 2019 配置PHP环境(图文教程)
    操作系统:WindowsServer2019运行模式:IIS10+fastcgi+PHP(安装IIS的时候选择上CGI)软件版本:MySQL5.7.37解压版/PHP7.4.29/PHPManager1.5.0/phpMyAdmin5.1.31、MySQL5.7.37解压版安装:为什么我会选择解压版而不是安装版?一是因为安装版没有64位版本;二是因为安装版......