国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SSE eventSource簡(jiǎn)介

lixiang / 737人閱讀

eventSource簡(jiǎn)單介紹

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

如何使用 客戶端代碼



    
    Document


    

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

服務(wù)端nodejs代碼

服務(wù)端這幾種實(shí)現(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)
    })
}

使用起來(lái)沒(méi)什么問(wèn)題,都可以正常運(yùn)行,不過(guò)在多個(gè)客戶端訪問(wèn)的時(shí)候,一個(gè)客戶端連上之后,其他客戶端就沒(méi)有推送了,不知道為甚么?

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82832.html

相關(guān)文章

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

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

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

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

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

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

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

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

    劉德剛 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<