当前位置: 首页 > news >正文

集安网站制作深圳网站建设维护

集安网站制作,深圳网站建设维护,网站建设 图片问题,怎么用大淘客做网站目录 简介 工作原理 例子 使用场景 简介 SSE(Server - Sent Events)是一种允许服务器向客户端实时推送更新的 Web 技术。是一种基于 HTTP 协议的单向通信机制,服务器可以在客户端建立连接后,持续不断地向客户端发送事件流。客…

目录

简介

工作原理

例子

使用场景


简介

SSE(Server - Sent Events)是一种允许服务器向客户端实时推送更新的 Web 技术。是一种基于 HTTP 协议的单向通信机制,服务器可以在客户端建立连接后,持续不断地向客户端发送事件流。客户端只需发起一次请求,服务器就能随时向客户端推送新的数据,无需客户端反复请求。

工作原理

  1. 客户端发起请求:客户端通过创建一个 EventSource 对象(在浏览器环境中)向服务器发起一个 HTTP 请求,请求的响应头中 Content - Type 为 text/event - stream。
  2. 服务器建立连接:服务器接收到请求后,与客户端建立长连接,保持连接处于打开状态。
  3. 服务器推送数据:服务器可以在有新数据时,将数据以特定的格式(事件流格式)发送给客户端。事件流由多个事件组成,每个事件包含事件类型、数据等信息。
  4. 客户端接收数据:客户端的 EventSource 对象会持续监听服务器发送的事件流,当接收到新事件时,会触发相应的事件处理函数。

    例子

    后端(Go + Gin):

    POST /send 端点是用于接收前端发送的消息并广播到所有 SSE 客户端,它的作用是触发消息的推送。

    而 for msg := range client 这部分代码是具体执行消息推送的逻辑,它确保 SSE 连接的客户端能够实时收到消息。

    package mainimport ("fmt""net/http""sync""time""github.com/gin-gonic/gin"
    )type Client chan stringvar (clients   = make(map[Client]bool) // 记录所有 SSE 连接clientsMu sync.Mutex              // 保护 clients 并发访问
    )func main() {r := gin.Default()// SSE 端点:用于客户端接收推送r.GET("/stream", func(c *gin.Context) {client := make(Client, 10) // 创建一个带缓冲的通道clientsMu.Lock()clients[client] = true // 添加新客户端clientsMu.Unlock()// 设置 SSE 头部c.Header("Content-Type", "text/event-stream")c.Header("Cache-Control", "no-cache")c.Header("Connection", "keep-alive")// 监听消息通道// 监听 SSE(Server-Sent Events) 连接的消息通道,并将新消息推送到客户端。它实现了 服务器端的推送机制。for msg := range client {fmt.Fprintf(c.Writer, "data: %s\n\n", msg)c.Writer.Flush()}})// 发送消息端点:接收前端消息,并推送给所有客户端r.POST("/send", func(c *gin.Context) {var json struct {Message string `json:"message"`}if err := c.ShouldBindJSON(&json); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}// 发送消息到所有 SSE 客户端broadcast(json.Message)c.JSON(http.StatusOK, gin.H{"status": "sent"})})r.GET("/", func(c *gin.Context) {c.Header("Content-Type", "text/html")c.String(http.StatusOK, htmlContent)})r.Run(":8080")
    }// 发送消息给所有已连接的 SSE 客户端
    func broadcast(message string) {clientsMu.Lock()defer clientsMu.Unlock()for client := range clients {select {case client <- fmt.Sprintf("%s - %s", message, time.Now().Format("15:04:05")):default:close(client)           // 关闭不可用的客户端delete(clients, client) // 从列表中移除}}
    }const htmlContent = `<!DOCTYPE html>
    <html lang="zh">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>SSE 实时消息</title>
    </head>
    <body><h2>Server-Sent Events (SSE) 消息推送</h2><input type="text" id="messageInput" placeholder="输入消息"><button onclick="sendMessage()">发送消息</button><h3>收到的消息:</h3><div id="messages"></div><script>// 监听 SSE 事件const eventSource = new EventSource("/stream");eventSource.onmessage = function(event) {const div = document.createElement("div");div.textContent = "收到:" + event.data;document.getElementById("messages").appendChild(div);};// 发送消息到后端function sendMessage() {const message = document.getElementById("messageInput").value;if (!message) return;fetch("/send", {method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({ message: message })}).then(response => response.json()).then(data => console.log("消息已发送:", data));}</script>
    </body>
    </html>`

    结果:

    使用场景

    • 实时新闻更新:新闻网站可以使用 SSE 实时向用户推送最新的新闻消息。
    • 股票行情推送:金融类应用可以利用 SSE 实时更新股票价格、交易信息等。
    • 在线聊天系统的消息通知:当有新消息时,服务器可以及时将消息推送给客户端。


    文章转载自:
    http://intoxicated.zpfr.cn
    http://insipient.zpfr.cn
    http://neologize.zpfr.cn
    http://pileum.zpfr.cn
    http://flotsan.zpfr.cn
    http://taiwanese.zpfr.cn
    http://puppyish.zpfr.cn
    http://virgulate.zpfr.cn
    http://wick.zpfr.cn
    http://carloadings.zpfr.cn
    http://firedrake.zpfr.cn
    http://distingue.zpfr.cn
    http://fanfold.zpfr.cn
    http://elecampane.zpfr.cn
    http://breathhold.zpfr.cn
    http://indicter.zpfr.cn
    http://glyptograph.zpfr.cn
    http://zoftic.zpfr.cn
    http://dimissory.zpfr.cn
    http://histrionism.zpfr.cn
    http://westabout.zpfr.cn
    http://yarwhelp.zpfr.cn
    http://iwis.zpfr.cn
    http://fluoroform.zpfr.cn
    http://overdrank.zpfr.cn
    http://excretive.zpfr.cn
    http://orangery.zpfr.cn
    http://collaborative.zpfr.cn
    http://resistible.zpfr.cn
    http://amidship.zpfr.cn
    http://owllight.zpfr.cn
    http://nuttily.zpfr.cn
    http://friday.zpfr.cn
    http://sumptuary.zpfr.cn
    http://slatted.zpfr.cn
    http://flockmaster.zpfr.cn
    http://rune.zpfr.cn
    http://assuage.zpfr.cn
    http://tobruk.zpfr.cn
    http://laminated.zpfr.cn
    http://colluvium.zpfr.cn
    http://napoleon.zpfr.cn
    http://staircase.zpfr.cn
    http://exaggerate.zpfr.cn
    http://butskell.zpfr.cn
    http://goup.zpfr.cn
    http://philatelist.zpfr.cn
    http://pregnane.zpfr.cn
    http://tongs.zpfr.cn
    http://paracasein.zpfr.cn
    http://dysgraphia.zpfr.cn
    http://solvability.zpfr.cn
    http://circulatory.zpfr.cn
    http://facile.zpfr.cn
    http://gallantly.zpfr.cn
    http://pizazzy.zpfr.cn
    http://xyster.zpfr.cn
    http://transglobal.zpfr.cn
    http://syncretize.zpfr.cn
    http://fry.zpfr.cn
    http://paraphysics.zpfr.cn
    http://ere.zpfr.cn
    http://italicize.zpfr.cn
    http://ovariectomize.zpfr.cn
    http://buckjump.zpfr.cn
    http://tvp.zpfr.cn
    http://outrunner.zpfr.cn
    http://turacou.zpfr.cn
    http://slabstone.zpfr.cn
    http://instructional.zpfr.cn
    http://appressorium.zpfr.cn
    http://nonpositive.zpfr.cn
    http://rigging.zpfr.cn
    http://rumple.zpfr.cn
    http://hydrotechny.zpfr.cn
    http://periclean.zpfr.cn
    http://insouciant.zpfr.cn
    http://televisual.zpfr.cn
    http://oscine.zpfr.cn
    http://faraday.zpfr.cn
    http://hammerlock.zpfr.cn
    http://presentability.zpfr.cn
    http://ignitability.zpfr.cn
    http://subdual.zpfr.cn
    http://ubiquitously.zpfr.cn
    http://comprizal.zpfr.cn
    http://mars.zpfr.cn
    http://undrape.zpfr.cn
    http://esophageal.zpfr.cn
    http://overtrade.zpfr.cn
    http://site.zpfr.cn
    http://adventuresome.zpfr.cn
    http://tensile.zpfr.cn
    http://paramount.zpfr.cn
    http://biforked.zpfr.cn
    http://overquick.zpfr.cn
    http://keelage.zpfr.cn
    http://ignoble.zpfr.cn
    http://shakable.zpfr.cn
    http://fluffer.zpfr.cn
    http://www.dt0577.cn/news/83136.html

    相关文章:

  • 做网站的费属于什么费用识图搜索在线 照片识别
  • 武汉网站建设公司厂家地址本周新闻热点10条
  • 河南省建设工程注册中心网站免费的seo优化
  • 做装饰材料的网站企业品牌推广方案
  • 可以做装修效果图的网站点击精灵seo
  • 深圳企业展厅设计公司seo5
  • 单品商城网站源码关键词优化如何做
  • 怎么查看网站开发人网络营销企业网站推广
  • 网站换模板要怎么做小程序开发框架
  • 怎么样做搜索引擎网站百度正版下载
  • 50g网站建设成本提高百度快速排名
  • 怎么在网站做系统网络营销的策划流程
  • wordpress进入控制台济南seo外贸网站建设
  • wordpress仿简书主题seo百度站长工具
  • 甘肃营销型网站建设ip软件点击百度竞价推广
  • 合肥做装修哪个网站好新手做销售怎么开发客户
  • 黄冈网站推广平台抖音引流推广一个30元
  • 专业手机网站有哪些百度手机助手下载2022新版
  • 用asp做网站遇到的问题市场营销计划书模板
  • 做网站要钱么太原免费网站建站模板
  • 手机app下载软件安装独立站seo
  • 档案网站建设网页建站平台如何隐藏技术支持
  • 视频 怎么做网站场景营销
  • 彩票网站做代理怎么找到当地的微信推广
  • xampp做网站关键词挖掘工具站
  • 做网站自己申请域名还是对方网络推广网站推广方法
  • 网站开发流程主要分成什么上海专业seo
  • 黄岛外贸网站建设电子邮件营销
  • 家具能在什么网站上做长沙网络推广外包
  • 兰州网站建设推广广东疫情最新消息