成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

SSE eventSource簡介

lixiang / 741人閱讀

eventSource簡單介紹

eventSource是用來解決web上服務(wù)器端向客戶端推送消息的問題的。不同于ajax輪詢的復(fù)雜和websocket的資源占用過大,eventSource(sse)是一個輕量級的,易使用的消息推送api

如何使用 客戶端代碼



    
    Document


    

代碼很簡單,實例化api,監(jiān)聽事件

服務(wù)端nodejs代碼

服務(wù)端這幾種實現(xiàn)使用其一就可以了

var http = require("http")
var fs = require("fs")

http.createServer(function (req, res) {

    var fileName = "." + req.url;

    if (fileName === "./stream") {
        res.writeHead(200, {
            "Content-Type":"text/event-stream", 
            "Cache-Control":"no-cache", 
            "Connection":"keep-alive"
        });

        res.write("retry: 10000
");
        res.write("event: connecttime
");
        res.write("data: " + (new Date()) + "

");
        res.write("data: " + (new Date()) + "

");

        interval = setInterval(function() {
            res.write("data: " + (new Date()) + "

");
        }, 1000);

        req.connection.addListener("close", function () {
            clearInterval(interval);
        }, false);
  } else {
      fs.readFile("./index.html", "utf8",function(err, html) {
          if (err) {
              console.log(err)
              return
          }
          res.end(html)
      })

  }
}).listen(9999);
服務(wù)端expressjs代碼
var express = require("express")
var fs = require("fs")
var app = express()

app.get("/stream", function(req, res) {
    console.log(111)

    res.writeHead(200, {
        "Content-Type":"text/event-stream", 
        "Cache-Control":"no-cache", 
        "Connection":"keep-alive"
    });

    res.write("retry: 10000
");
    res.write("event: connecttime
");
    res.write("data: " + (new Date()) + "

");
    res.write("data: " + (new Date()) + "

");

    interval = setInterval(function() {
        res.write("data: " + (new Date()) + "

");
    }, 1000);

    req.connection.addListener("close", function () {
        clearInterval(interval);
    }, false);
})

app.use(function(req, res) {
    fs.readFile("./index.html", "utf8",function(err, html) {
        if (err) {
            console.log(err)
            return
        }
        res.send(html)
    })
})

app.listen(9999, function(err) {
    if (err) {
        console.log(err)
        return
    }
    console.log("listening on port 9999")
})
服務(wù)端koajs 1.x 代碼
var koa = require("koa")
var fs = require("fs")
var PassThrough = require("stream").PassThrough

var app = koa()

app.use(function *() {
    var url = this.req.url
    if (url === "/stream") {
        var stream = new PassThrough()

        setInterval(function() {
            stream.write("data: " + (new Date()) + "

")
        }, 1000);

        this.type = "text/event-stream"
        this.body = stream
    } else {
        var html = yield koaFs
        this.body = html
    }
})

app.listen(9999, function(err) {
    if (err) {
        console.log(err)
        return 
    }
    console.log("listening on port 9999")
})

function koaFs(fn) {
    fs.readFile("./index.html", "utf8", function(err, html) {
        fn(err, html)
    })
}

使用起來沒什么問題,都可以正常運行,不過在多個客戶端訪問的時候,一個客戶端連上之后,其他客戶端就沒有推送了,不知道為甚么?

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82832.html

相關(guān)文章

  • 在nginx下利用php配置SSE的正確方法

    摘要:簡介是的縮寫。通常情況下,是我們的瀏覽器向服務(wù)器發(fā)起請求后,服務(wù)器響應(yīng),然后關(guān)閉連接。為了能夠保持通信,以便在服務(wù)器有事件發(fā)生時主動通知瀏覽器,后來人們又發(fā)明了很多技術(shù),包括等。 SSE簡介 SSE是Server-Sent Events的縮寫。通常情況下,是我們的瀏覽器向服務(wù)器發(fā)起請求后,服務(wù)器響應(yīng),然后關(guān)閉連接。為了能夠保持通信,以便在服務(wù)器有事件發(fā)生時主動通知瀏覽器,后來人們又發(fā)明...

    he_xd 評論0 收藏0
  • 在nginx下利用php配置SSE的正確方法

    摘要:簡介是的縮寫。通常情況下,是我們的瀏覽器向服務(wù)器發(fā)起請求后,服務(wù)器響應(yīng),然后關(guān)閉連接。為了能夠保持通信,以便在服務(wù)器有事件發(fā)生時主動通知瀏覽器,后來人們又發(fā)明了很多技術(shù),包括等。 SSE簡介 SSE是Server-Sent Events的縮寫。通常情況下,是我們的瀏覽器向服務(wù)器發(fā)起請求后,服務(wù)器響應(yīng),然后關(guān)閉連接。為了能夠保持通信,以便在服務(wù)器有事件發(fā)生時主動通知瀏覽器,后來人們又發(fā)明...

    hzx 評論0 收藏0
  • 服務(wù)端事件EventSource揭秘

    摘要:不過永久幀的技術(shù)會導(dǎo)致主頁面的加載條始終處于狀態(tài),體驗很差。同時,規(guī)范允許服務(wù)端指定自定義事件,客戶端偵聽該事件即可。 服務(wù)端推 服務(wù)端推,指的是由服務(wù)器主動的向客戶端發(fā)送消息(響應(yīng))。在應(yīng)用層的HTTP協(xié)議實現(xiàn)中,請求-響應(yīng)是一個round trip,它的起點來自客戶端,因此在應(yīng)用層之上無法實現(xiàn)簡易的服務(wù)端推功能。當(dāng)前解決服務(wù)端推送的方案有這幾個: 客戶端長輪訓(xùn) websocket...

    sf190404 評論0 收藏0
  • H5數(shù)據(jù)推送

    摘要:本文則試著和讀者一起對這個數(shù)據(jù)推送的需求進(jìn)行技術(shù)方案的探究。數(shù)據(jù)推送有兩種替代方案無更新方案和數(shù)據(jù)拉取方案。數(shù)據(jù)拉取和數(shù)據(jù)推送的功能目標(biāo)是一致的讓用戶看到最新的數(shù)據(jù)。但數(shù)據(jù)推送有一些優(yōu)勢,即更低的延遲。 前言 眾所周知,AJAX的出現(xiàn)是前端快速發(fā)展的一個標(biāo)志,同時也是前后端得以分離的重要基礎(chǔ)。作為一個C/S網(wǎng)絡(luò)的web系統(tǒng),網(wǎng)絡(luò)通信在發(fā)揮著舉足輕重的作用。大部分的場景下,我們是主動觸發(fā)...

    劉德剛 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<