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

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

什么是WebSocket技術(shù)

本篇內(nèi)容主要講解“什么是WebSocket技術(shù)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“什么是WebSocket技術(shù)”吧!

網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)公司專(zhuān)注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營(yíng)網(wǎng)站定制開(kāi)發(fā).小程序定制開(kāi)發(fā),H5頁(yè)面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都玻璃鋼坐凳等企業(yè)提供專(zhuān)業(yè)服務(wù)。

在WebSocket規(guī)范提出之前,開(kāi)發(fā)人員實(shí)現(xiàn)實(shí)時(shí)性較強(qiáng)的功能基本采用兩種輪詢(xún)方法:輪詢(xún)(polling)和Comet技術(shù)。

輪詢(xún):輪詢(xún)技術(shù)要求客戶(hù)端以設(shè)定的時(shí)間間隔周期性地向服務(wù)端發(fā)送請(qǐng)求,頻繁地查詢(xún)是否有新的數(shù)據(jù)改動(dòng)。明顯地,這種方法會(huì)導(dǎo)致過(guò)多不必要的請(qǐng)求,浪費(fèi)流量和服務(wù)器資源。

Comet技術(shù)可分為:長(zhǎng)輪詢(xún)、流技術(shù)。長(zhǎng)輪詢(xún)改進(jìn)了上述的輪詢(xún)技術(shù),減小了無(wú)用的請(qǐng)求。它會(huì)為某些數(shù)據(jù)設(shè)定過(guò)期時(shí)間,當(dāng)數(shù)據(jù)過(guò)期后才會(huì)向服務(wù)端發(fā)送請(qǐng)求;這種機(jī)制適合數(shù)據(jù)的改動(dòng)不是特別頻繁的情況。流技術(shù)**指客戶(hù)端使用一個(gè)隱藏的窗口與服務(wù)端建立HTTP長(zhǎng)連接,服務(wù)端會(huì)不斷更新連接狀態(tài)以保持HTTP長(zhǎng)連接存活,然后才能主動(dòng)推送數(shù)據(jù)給客戶(hù)端。

缺點(diǎn):這兩種技術(shù)每一次請(qǐng)求、應(yīng)答,都浪費(fèi)了一定流量在相同的頭部信息上,并且開(kāi)發(fā)復(fù)雜度也較大。

伴隨著HTML5推出的WebSocket,使B/S模式具備了C/S模式的實(shí)時(shí)通信能力。WebSocket連接本質(zhì)上是TCP連接,不需要每次傳輸都帶上重復(fù)的頭部數(shù)據(jù)。WebSocket的工作流程:瀏覽器通過(guò)JavaScript向服務(wù)端發(fā)出建立WebSocket連接的請(qǐng)求,在WebSocket連接建立成功后,客戶(hù)端和服務(wù)端就可以通過(guò)TCP連接傳輸數(shù)據(jù)。

WebSocket與TCP、HTTP的關(guān)系

WebSocket與http協(xié)議一樣都是基于TCP的可靠協(xié)議,WebSocket在建立握手連接時(shí),數(shù)據(jù)是通過(guò)http協(xié)議傳輸?shù)?,但是在建立連接之后,真正的數(shù)據(jù)傳輸階段是不需要http協(xié)議參與的。

什么是WebSocket技術(shù)

websocket通訊原理

從下圖可以明顯的看到,分三個(gè)階段:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 打開(kāi)握手

  3. 數(shù)據(jù)傳遞

  4. 關(guān)閉握手

什么是WebSocket技術(shù)

下圖顯示了WebSocket主要的三步 瀏覽器和 服務(wù)器端分別做了那些事情。

什么是WebSocket技術(shù)

websocket優(yōu)缺點(diǎn)

a)、服務(wù)器與客戶(hù)端之間交換的標(biāo)頭信息很小,大概只有2字節(jié);

b)、客戶(hù)端與服務(wù)器可互相主動(dòng)傳送數(shù)據(jù)給對(duì)方;

c)、Websocket是http協(xié)議的升級(jí),支持持久連接并只需一次握手。不用頻率創(chuàng)建TCP請(qǐng)求及銷(xiāo)毀請(qǐng)求,減少網(wǎng)絡(luò)帶寬資源的占用,同時(shí)也節(jié)省服務(wù)器資源;

Spring boot websocket實(shí)現(xiàn)

引入依賴(lài)

     org.springframework.boot     spring-boot-starter-websocket 

 創(chuàng)建 WebSocket 處理器

擴(kuò)展 TextWebSocketHandler 或 BinaryWebSocketHandler ,你可以覆寫(xiě)指定的方法。Spring 在收到  WebSocket 事件時(shí),會(huì)自動(dòng)調(diào)用事件對(duì)應(yīng)的方法。

package com.ganhuojun.websocket.spring;  import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketMessage; import org.springframework.web.socket.WebSocketSession;  @Component public class MySpringWebSocketHandler implements WebSocketHandler {      /**      * 建立連接后觸發(fā)的回調(diào)      */     @Override     public void afterConnectionEstablished(WebSocketSession webSocketSession) throws Exception {         System.out.println("spring 鏈接" + webSocketSession.getId());     }      /**      * 收到消息時(shí)觸發(fā)的回調(diào)      */     @Override     public void handleMessage(WebSocketSession webSocketSession, WebSocketMessage webSocketMessage) throws Exception {      }      /**      * 傳輸消息出錯(cuò)時(shí)觸發(fā)的回調(diào)      */     @Override     public void handleTransportError(WebSocketSession webSocketSession, Throwable throwable) throws Exception {      }      /**      * 斷開(kāi)連接后觸發(fā)的回調(diào)      */     @Override     public void afterConnectionClosed(WebSocketSession webSocketSession, CloseStatus closeStatus) throws Exception {      }      /**      * 是否處理分片消息      */     @Override     public boolean supportsPartialMessages() {         return false;     } }

配置 WebSocket

將 WebSocket 處理器添加到注冊(cè)中心

package com.ganhuojun.websocket.spring;  import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;  @Configuration @EnableWebSocket public class SpringWebSocketConfig implements WebSocketConfigurer {      @Override     public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {         //spring默認(rèn)會(huì)給一個(gè)OriginHandshakeInterceptor的攔截器         // 因此需要setAllowedOrigins,否則websocket返回403         registry.addHandler(springWebSocketHandler(), "/spring/websocket").setAllowedOrigins("*");     }      @Bean     public MySpringWebSocketHandler springWebSocketHandler() {         return new MySpringWebSocketHandler();     }  }

前端可以自己編寫(xiě)js代碼,本文直接使用websocket在線調(diào)試工具

http://www.websocket-test.com/

如下圖,

 什么是WebSocket技術(shù)

根據(jù)前面后端代碼,測(cè)試一下

 什么是WebSocket技術(shù)

后端日志

什么是WebSocket技術(shù)

到此,相信大家對(duì)“什么是WebSocket技術(shù)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文標(biāo)題:什么是WebSocket技術(shù)
當(dāng)前地址:http://weahome.cn/article/pocchc.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部