真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

html5的服務(wù)器如何推送Server-sentEvents和websocket

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)html5的服務(wù)器如何推送Server-sent Events和 websocket,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在焦作等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營(yíng)銷(xiāo)網(wǎng)站建設(shè),外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),焦作網(wǎng)站建設(shè)費(fèi)用合理。

html5 的服務(wù)器推送 Server-sent Events和 websocket

Server-Sent Events

運(yùn)行原理

瀏覽器通過(guò)HTTP向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器端拿出數(shù)據(jù)庫(kù)中的最新的信息,立即返回給客戶端,客戶端等待三秒后再次發(fā)出下一個(gè)請(qǐng)求。

實(shí)現(xiàn)方式

JavaScript模塊打開(kāi)EventSource,把接受者的id傳給服務(wù)端。 客戶端收到相應(yīng)后,onMessage事件的處理器將被調(diào)用。瀏覽器將每3秒發(fā)送一個(gè)請(qǐng)求,除非將連接關(guān)閉(Close方法)。

客戶端示例:




  
  
  JS Bin


EventSource 對(duì)象

在上面的例子中,我們使用 onmessage 事件來(lái)獲取消息。不過(guò)還可以使用其他事件:

事件描述
onopen當(dāng)通往服務(wù)器的連接被打開(kāi)
onmessage當(dāng)接收到消息
onerror當(dāng)發(fā)生錯(cuò)誤

nodejs 服務(wù)端示例:

服務(wù)器端事件流的語(yǔ)法是非常簡(jiǎn)單的。把 "Content-Type" 報(bào)頭設(shè)置為"text/event-stream"。

服務(wù)器返回字段:

兩種情況會(huì)導(dǎo)致瀏覽器重新發(fā)起連接
一種是時(shí)間間隔到期,二是由于網(wǎng)絡(luò)錯(cuò)誤等原因,導(dǎo)致連接出錯(cuò)。

var http = require("http");

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",
      "Access-Control-Allow-Origin": '*',
    });
    res.write("retry: 10000\n");
    res.write("event: connecttime\n");
    res.write("data: " + (new Date()) + "\n\n");
    res.write("data: " + (new Date()) + "\n\n");

    interval = setInterval(function () {
      res.write("data: " + (new Date()) + "\n\n");
    }, 1000);

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

WebSockets

返回目錄

運(yùn)行原理

客戶端通知WebSockets服務(wù)器一個(gè)事件,告訴他接收者id,服務(wù)器將立即通知消息,當(dāng)任何新的未讀消息來(lái)的時(shí)候,服務(wù)器都將立即返回?cái)?shù)據(jù)給客戶端。

客戶端示例:


function WebSocketTest(){
if ("WebSocket" in window){
   alert("您的瀏覽器支持 WebSocket!");
   // 打開(kāi)一個(gè) web socket
   var ws = new WebSocket("ws://localhost:8181");
   ws.onopen = function(){
      // Web Socket 已連接上,使用 send() 方法發(fā)送數(shù)據(jù)
      ws.send("發(fā)送數(shù)據(jù)");
      alert("數(shù)據(jù)發(fā)送中...");
   };
    
   ws.onmessage = function (evt) { 
      var received_msg = evt.data;
      alert("數(shù)據(jù)已接收...");
   };
    
   ws.onclose = function(){ 
      // 關(guān)閉 websocket
      alert("連接已關(guān)閉..."); 
   };
}else{
   // 瀏覽器不支持 WebSocket
   alert("您的瀏覽器不支持 WebSocket!");
}
}
      

socket服務(wù)端 nodejs

var net = require("net");
server1 = net.createServer(function(client){
    client.write('Hello World!\r\n');
});

server1.listen(9000);
//--------------------------------------------------
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({ port: 8181 });
wss.on('connection', function (ws) {
    console.log('client connected');
    ws.on('message', function (message) {
        console.log(message);
    });
});

總結(jié)

返回目錄

瀏覽器兼容性

服務(wù)器負(fù)載

客戶端負(fù)載

時(shí)間線

實(shí)現(xiàn)方式復(fù)雜度

上述就是小編為大家分享的html5的服務(wù)器如何推送Server-sent Events和 websocket了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁(yè)標(biāo)題:html5的服務(wù)器如何推送Server-sentEvents和websocket
轉(zhuǎn)載注明:http://weahome.cn/article/pojsgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部