日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

WebSocket是一種雙向、單套接字連接,使用WebSocket,那么請求就變成了打開WebSocket連接的單一請求,并且可以重用公客戶端到服務(wù)器以及服務(wù)器到客戶端的同一連接。

WebSock減少延遲,一旦建立起WebSocket連接,服務(wù)器可以在消息可用的時候發(fā)送。這是輪詢和WebSocket的比較。

WebSocket基本使用方法

WebSocket讓實時通信更加有效,可以節(jié)約帶寬、CPU資源并減少延遲。

WebSocket連接通過在客戶端和服務(wù)端之間第一次握手的時候?qū)ttp協(xié)議升級到WebSocket協(xié)議來完成,這個過程在相同的底層TCP連接上進行。

創(chuàng)建WebSocket連接

首先調(diào)用WebSocket構(gòu)造函數(shù),創(chuàng)建一個WebSocket連接,構(gòu)造函數(shù)返回的WebSocket對象實例。

建立客戶端的WebSocket連接

使用WebSocket接口,通過指向一個表示所要連接端點的URL,實例化一個WebSocket對象。

WebSocket協(xié)議定義了兩種URL:ws和wss。和HTTP、HTTPS類似,表示非加密和加密數(shù)據(jù)。wss表示使用傳輸層安全性的WebSocket連接。

WebSocket構(gòu)造函數(shù)有一個必填的URL和可選參數(shù)protocols,URL是指向連接目標(biāo)的URL;protocols是為了建立連接,服務(wù)器必須在它響應(yīng)中包含一個或者一組協(xié)議名稱,比如:

    <script>
        let ws = new WebSocket("ws://localhost:3000/",['com.kaazing.echo']);
        ws.onopen = () => {
            ws.send("hello")
        }
        ws.onmessage =(ev) => {
            console.log("ev", ev)
        }
        
    </script>

和所有的Web API事件一樣,使用on+事件名稱來處理屬性監(jiān)聽這些事件。WebSocket對象調(diào)度4個不同的事件:

  1. open,當(dāng)服務(wù)器響應(yīng)了WebSocket連接請求,那么open事件觸發(fā)并且建立一個連接,open事件對應(yīng)的回調(diào)函數(shù)就是onopen。
  2. message,在接收到消息時候觸發(fā),對應(yīng)事件的回調(diào)函數(shù)是onmessage,
  3. error,在響應(yīng)意外故障的時候觸發(fā),對應(yīng)的回調(diào)函數(shù)是onerror。錯誤還會導(dǎo)致WebSocket連接關(guān)閉。
  4. close,在WebSocket連接關(guān)閉的時候觸發(fā),對應(yīng)的回調(diào)函數(shù)是onclose。一旦連接關(guān)閉,那么客戶端或者服務(wù)器就不再能接收或者發(fā)送信息。

創(chuàng)建服務(wù)端的WebSocket

代碼如下:

const express = require("express");
const http = require("http");
const Ws = require("ws").Server;
const App = express();

const server = http.createServer(app);

server.listen(3000);
app.use(express.static('www'));

let wsServer = new Ws({server});

wsServer.on("connection",function(socket){
    console.log("連接成功");
    socket.on("message",msg=>{
        console.log("客戶端信息",msg)
        socket.send("客戶端發(fā)送的信息:"+msg+","+new Date().getTime())
    })
})

index.html代碼:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <p id="mes"></p>

    <script>
        let pText = document.querySelector("p")
        let ws = new WebSocket("ws://localhost:3000/", ['com.kaazing.echo']);
        ws.onopen = (e) => {
            console.log("WebSocket open", e);
            setInterval(() => {
                ws.send(new Date().getTime())
            }, 2000)
        }
        ws.onmessage = ({ data }) => {
            pText.innerText = data;
        }

    </script>
</body>

</html>

然后執(zhí)行命令:node ws.js,在瀏覽器打開上面創(chuàng)建的頁面,效果如下:

WebSocket基本使用方法

 

分享到:
標(biāo)簽:WebSocket
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定