<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 概述 websocket是html5提出的一個 協議 規范,由html5提供一種瀏覽器和服務器之間的全雙工通信網絡技術。 Websocket通信協議與2011年被IETF定為標準RFC 6455,Websocket Api被W3C定為標準。 全雙工,是通訊傳輸的一個術語,通信允許數據在兩個方向上同時傳輸。相當于高速公路或打電話。 單工或半雙工,是指一個時間段內只有一個動作發生。相當于汽車單行道或對講機 協議名:ws ### WebSocket優越性 以前不管使用HTTP輪詢或使用TCP長連接等方式制作即實消息系統,都有著天然的缺陷,隨著HTML5的興起,其 中有一個新的協議Websocket Protocol,可以實現瀏覽器與服務器全雙工通信,它可以做到:通過一個握手的機 制,客戶端(瀏覽器)和服務器(webserver)之間能建立一個類似tcp的連接,從而方便【客戶端】-【服務 端】之間的通信。兩者之是就直接可以數據互相傳送,這個新的協議的特點正好適合這種即時通信 . ### Websocket協議實現方式: 它是一長鏈接,只能通過一次請求來初始化鏈接,然后所有的請求和響應都是通過這個連接進行通訊,這意味著它 是一種基于事件驅動,異步的消息機制。只需要一個握手動作,就可以形成一條快速的通道. ### 握手協議 在實現websocket連線過程中,需要通過瀏覽器發出websocket連線請求,然后服務器發出回應,這個過程通常稱為“握手” (handshaking) . ![](https://box.kancloud.cn/33ab6f3e48a7f4ee715ba24b85d4a892_992x355.png) ### 瀏覽器發送請求 因為websocket已是html5自身就有可以在js中直接實例化來使用 . ~~~ var webSocket = new WebSocket("ws://localhost:9000") ~~~ ### 服務端返回請求 在websocket協議規范中規定,Sec-WebSocket-Version大于等于13之后加密返回的Sec-WebSocket-Accept將進行如下的操作 : GUID(協議規定的一個固定值):258EAFA5-E914-47DA-95CA-C5AB0DC85B11 加密過程 : 客戶端上報的Sec-WebSocket-Key的值拼接上GUID【258EAFA5-E914-47DA-95CA-C5AB0DC85B11】,拿這個字符串做sha1計算,然后再把得到的結果通過base64加密,最后再返回給客戶端 . ~~~ base64_encode(sha1("2SCVXUeP9cTjV+0mWB8J6A==" . "258EAFA5‐E914‐47DA‐95CA‐C5AB0DC85B11"), true)); ~~~ Sec-WebSocket-Key此值需要通過如正則來獲取 ~~~ /** * @param $header 客戶端頭信息 * @param $activeSocket 客戶端的socket對象 */ function handshaking($header, $activeSocket) { preg_match("/Sec\‐WebSocket\‐Key:\ (.+)\r\n/", $header, $matchs); $key = base64_encode(sha1($matchs[1] . "258EAFA5‐E914‐47DA‐95CA‐C5AB0DC85B11", true)); $head = "HTTP/1.1 101 Switching Protocols\r\n"; $head .= "Upgrade: websocket\r\n"; // 告訴這個websocket客戶端可以把這個協議升級為websocket協議 $head .= "Connection: Upgrade\r\n"; // 升級這個通信協議 $head .= "Sec‐WebSocket‐Accept: {$key}\r\n\r\n"; // 最后的一定要有兩個回車 // 握手響應協議信息返回給瀏覽器 socket_write($activeSocket, $head); } ~~~ 完成此步驟,瀏覽器和服務器之間的握手操作就完成,后就可以進行相互的通信操作。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看