国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【面試題精講】什么是websocket?如何與前端通信?

這篇具有很好參考價值的文章主要介紹了【面試題精講】什么是websocket?如何與前端通信?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


有的時候博客內(nèi)容會有變動,首發(fā)博客是最新的,其他博客地址可能會未同步,認(rèn)準(zhǔn)https://blog.zysicyj.top

首發(fā)博客地址

系列文章地址


什么是WebSocket?

WebSocket是一種在Web應(yīng)用程序中實現(xiàn)雙向通信的協(xié)議。它允許在客戶端和服務(wù)器之間建立持久的、全雙工的連接,以便實時地發(fā)送數(shù)據(jù)。

傳統(tǒng)的HTTP協(xié)議是一種無狀態(tài)的請求-響應(yīng)協(xié)議,客戶端發(fā)送請求,服務(wù)器返回響應(yīng),然后連接立即關(guān)閉。這種模型適用于大多數(shù)Web應(yīng)用程序,但對于需要實時數(shù)據(jù)更新或雙向通信的應(yīng)用程序來說,它并不理想。

WebSocket通過在客戶端和服務(wù)器之間建立長久的TCP連接,提供了一種持久性的通信通道。它通過在HTTP握手過程中升級連接,從而允許在同一個連接上進(jìn)行雙向通信。

WebSocket的特點包括:

  1. 雙向通信:WebSocket允許客戶端和服務(wù)器之間雙向發(fā)送數(shù)據(jù),而不僅僅是客戶端向服務(wù)器發(fā)送請求。

  2. 實時性:WebSocket提供了高效的實時數(shù)據(jù)傳輸,可以在數(shù)據(jù)可用時立即將其推送給客戶端。

  3. 較低的開銷:WebSocket使用較少的網(wǎng)絡(luò)開銷,因為它使用持久連接而不需要頻繁的握手和頭部信息。

  4. 兼容性:WebSocket協(xié)議已經(jīng)得到了廣泛的支持,現(xiàn)代的Web瀏覽器和服務(wù)器都可以很好地支持WebSocket。

WebSocket在許多實時應(yīng)用程序中得到廣泛應(yīng)用,例如聊天應(yīng)用程序、實時協(xié)作工具、股票市場報價、多人游戲等。它提供了一種強(qiáng)大的機(jī)制,使得開發(fā)者可以輕松實現(xiàn)實時和雙向的Web應(yīng)用程序。

Spring Boot如何實現(xiàn)WebSocket

在Spring Boot中,可以使用Spring WebSocket模塊來實現(xiàn)WebSocket功能。以下是使用Spring Boot實現(xiàn)WebSocket的基本步驟:

  1. 添加依賴:在 pom.xml文件中添加以下依賴,以引入Spring WebSocket和Tomcat WebSocket的支持:

<dependency>
????<groupId>org.springframework.boot</groupId>
????<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</dependency>
  1. 創(chuàng)建一個WebSocket處理器類:創(chuàng)建一個類,實現(xiàn) org.springframework.web.socket.handler.TextWebSocketHandler ,并重寫 handleTextMessageafterConnectionEstablished等方法來處理WebSocket事件。
import?org.springframework.web.socket.TextMessage;
import?org.springframework.web.socket.WebSocketSession;
import?org.springframework.web.socket.handler.TextWebSocketHandler;

public?class?MyWebSocketHandler?extends?TextWebSocketHandler?{

????@Override
????protected?void?handleTextMessage(WebSocketSession?session,?TextMessage?message)?throws?Exception?{
????????//?處理收到的文本消息
????}

????@Override
????public?void?afterConnectionEstablished(WebSocketSession?session)?throws?Exception?{
????????//?處理連接建立事件
????}
}
  1. 配置WebSocket端點:創(chuàng)建一個配置類,繼承自 org.springframework.web.socket.config.annotation.WebSocketConfigurer ,并重寫 registerWebSocketHandlers方法來注冊WebSocket處理器和端點。
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?WebSocketConfig?implements?WebSocketConfigurer?{

????@Override
????public?void?registerWebSocketHandlers(WebSocketHandlerRegistry?registry)?{
????????registry.addHandler(new?MyWebSocketHandler(),?"/websocket").setAllowedOrigins("*");
????}
}
  1. 啟動應(yīng)用程序:編寫一個Spring Boot啟動類,并添加 @SpringBootApplication注解來啟動應(yīng)用程序。
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public?class?MyApplication?{

????public?static?void?main(String[]?args)?{
????????SpringApplication.run(MyApplication.class,?args);
????}
}

通過這些步驟,您可以在Spring Boot中實現(xiàn)WebSocket功能。客戶端可以使用JavaScript的WebSocket 對象或其他WebSocket客戶端庫來連接到您的WebSocket端點。

請注意,上述代碼只是一個基本示例,您可以根據(jù)實際需求進(jìn)行更復(fù)雜的WebSocket實現(xiàn)。另外,還可以使用@MessageMapping 注解來處理特定消息類型,使用SimpMessagingTemplate發(fā)送消息給訂閱了特定主題的客戶端等。

前端如何與websocket通信

在前端處理WebSocket連接和消息,您可以使用JavaScript的WebSocket API來實現(xiàn)。以下是基本的前端處理步驟:

  1. 創(chuàng)建WebSocket對象:使用 WebSocket構(gòu)造函數(shù)創(chuàng)建一個WebSocket對象,并傳入WebSocket服務(wù)器的URL。
var?socket?=?new?WebSocket("ws://localhost:8080/your-application/websocket");
  1. 監(jiān)聽WebSocket事件:通過WebSocket對象的事件處理程序,監(jiān)聽WebSocket的連接狀態(tài)和消息事件。
socket.onopen?=?function?()?{
????//?連接建立后的操作
};

socket.onclose?=?function?()?{
????//?連接關(guān)閉后的操作
};

socket.onerror?=?function?(error)?{
????//?錯誤處理
};

socket.onmessage?=?function?(event)?{
????var?message?=?event.data;
????//?處理收到的消息
};
  1. 發(fā)送消息:使用WebSocket對象的 send方法發(fā)送消息到WebSocket服務(wù)器。
socket.send("Hello,?server!");
  1. 關(guān)閉連接:使用WebSocket對象的 close方法關(guān)閉WebSocket連接。
socket.close();

通過這些步驟,您可以在前端處理WebSocket連接和消息。您可以根據(jù)實際需求,在事件處理程序中實現(xiàn)您的業(yè)務(wù)邏輯,例如更新UI、發(fā)送和接收數(shù)據(jù)等。

請注意,WebSocket連接是異步的,所以您需要適當(dāng)處理連接建立、關(guān)閉和錯誤事件。此外,還可以使用其他WebSocket庫(如Socket.io、SockJS等)來簡化WebSocket處理,并提供更多高級功能,如自動重連、心跳檢測等。

如何使用Python與websocket通信

要實現(xiàn)Python和Spring Boot WebSocket的通信,可以使用Python的WebSocket客戶端庫與Spring Boot的WebSocket服務(wù)器進(jìn)行通信。以下是一種常見的實現(xiàn)方式:

  1. 安裝WebSocket客戶端庫:使用Python的包管理工具(如pip)安裝websocket-client庫。
pip?install?websocket-client
  1. 在Python中創(chuàng)建WebSocket連接:在Python代碼中導(dǎo)入websocket庫,并創(chuàng)建一個WebSocket連接到Spring Boot的WebSocket服務(wù)器。
import?websocket

def?on_message(ws,?message):
????#?處理收到的消息
????print(f"Received:?{message}")

def?on_error(ws,?error):
????#?處理錯誤
????print(f"Error:?{error}")

def?on_close(ws):
????#?處理連接關(guān)閉
????print("Connection?closed")

def?on_open(ws):
????#?處理連接建立
????print("Connection?established")
????#?發(fā)送消息
????ws.send("Hello?from?Python!")

websocket.enableTrace(True)
ws?=?websocket.WebSocketApp("ws://localhost:8080/your-websocket-endpoint",
????????????????????????????on_message=on_message,
????????????????????????????on_error=on_error,
????????????????????????????on_close=on_close)
ws.on_open?=?on_open
ws.run_forever()
  1. 在Spring Boot中處理WebSocket消息:在您的Spring Boot應(yīng)用程序中創(chuàng)建WebSocket處理器類,處理來自Python客戶端的消息。
import?org.springframework.stereotype.Component;
import?org.springframework.web.socket.handler.TextWebSocketHandler;
import?org.springframework.web.socket.TextMessage;
import?org.springframework.web.socket.WebSocketSession;

@Component
public?class?MyWebSocketHandler?extends?TextWebSocketHandler?{

????@Override
????protected?void?handleTextMessage(WebSocketSession?session,?TextMessage?message)?throws?Exception?{
????????//?處理收到的消息
????????System.out.println("Received:?"?+?message.getPayload());
????????//?發(fā)送消息給Python客戶端
????????session.sendMessage(new?TextMessage("Hello?from?Spring?Boot!"));
????}
}

確保WebSocket端點的URL路徑在Python和Spring Boot代碼中匹配,并根據(jù)實際情況進(jìn)行調(diào)整。

通過這些步驟,您可以在Python和Spring Boot之間建立WebSocket通信。當(dāng)Python客戶端發(fā)送消息時,Spring Boot服務(wù)器將接收并處理該消息,并可以向Python客戶端發(fā)送響應(yīng)消息。

本文由 mdnice 多平臺發(fā)布文章來源地址http://www.zghlxwxcb.cn/news/detail-695104.html

到了這里,關(guān)于【面試題精講】什么是websocket?如何與前端通信?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • websockets-后端主動向前端推送消息

    websockets-后端主動向前端推送消息

    公司領(lǐng)導(dǎo)提出了一個新的需求,那就是部門主管在有審批消息的情況下,需要看到提示消息。其實這種需求最簡單的方法使接入短信、郵件、公眾號平臺。直接推送消息。但是,由于使自研項目,公司領(lǐng)導(dǎo)不想花錢,只能另辟蹊徑。 WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。

    2024年02月09日
    瀏覽(23)
  • 前端訂閱后端推送WebSocket定時任務(wù)

    前端訂閱后端推送WebSocket定時任務(wù)

    ? ? ? ? 后端定時向前端看板推送數(shù)據(jù),每10秒或者30秒推送一次。 ????????HTTP協(xié)議是一個應(yīng)用層協(xié)議,它的特點是無狀態(tài)、無連接和單向的。在HTTP協(xié)議中,客戶端發(fā)起請求,服務(wù)器則對請求進(jìn)行響應(yīng)。這種請求-響應(yīng)的模式意味著服務(wù)器無法主動向客戶端發(fā)送消息。 ??

    2024年04月25日
    瀏覽(21)
  • 【面試題精講】標(biāo)識符和關(guān)鍵字的區(qū)別是什么

    “ 有的時候博客內(nèi)容會有變動,首發(fā)博客是最新的,其他博客地址可能會未同步,認(rèn)準(zhǔn) https://blog.zysicyj.top ” 首發(fā)博客地址 [1] 面試題手冊 [2] 系列文章地址 [3] 標(biāo)識符 :在編程語言中,標(biāo)識符是用來表示變量、函數(shù)、類等命名實體的名稱。它由一系列字符組成,可以包含字母

    2024年02月07日
    瀏覽(26)
  • 服務(wù)端(后端)主動通知前端的實現(xiàn):WebSocket(springboot中使用WebSocket案例)

    我們都知道 http 協(xié)議只能瀏覽器單方面向服務(wù)器發(fā)起請求獲得響應(yīng),服務(wù)器不能主動向瀏覽器推送消息。想要實現(xiàn)瀏覽器的主動推送有兩種主流實現(xiàn)方式: 輪詢:缺點很多,但是實現(xiàn)簡單 websocket:在瀏覽器和服務(wù)器之間建立 tcp 連接,實現(xiàn)全雙工通信 springboot 使用 websocket 有

    2023年04月14日
    瀏覽(36)
  • 【面試精講】Java有哪些垃圾回收器?工作原理都是什么?它們有什么區(qū)別?

    【面試精講】Java有哪些垃圾回收器?工作原理都是什么?它們有什么區(qū)別?

    【面試精講】Java有哪些垃圾回收器?工作原理都是什么?它們有什么區(qū)別? 目錄 本文導(dǎo)讀 一、垃圾回收器概覽 Serial GC工作原理概覽 Parallel GC工作原理概覽 CMS回收器工作原理概覽 G1回收器工作原理概覽 2、選擇適合的垃圾回收器 二、串行垃圾回收器(Serial GC) 工作原理 工

    2024年04月16日
    瀏覽(23)
  • 【W(wǎng)ebSocket】前端使用WebSocket實時通信

    【W(wǎng)ebSocket】前端使用WebSocket實時通信

    最近寫項目,需要實現(xiàn)消息通知和實時聊天的功能,就去了解了一些關(guān)于websocket的知識,總結(jié)如下。 WebSocket 是一種在 Web 應(yīng)用中實現(xiàn)實時通信的協(xié)議。與傳統(tǒng)的 HTTP 請求不同,WebSocket 連接在客戶端和服務(wù)器之間建立一個 持久性 的 雙向通信管道 ,使得數(shù)據(jù)可以在連接打開后

    2024年02月11日
    瀏覽(23)
  • WebSocket實現(xiàn)后端數(shù)據(jù)變化,通知前端實時更新數(shù)據(jù)

    背景 ? 項目中需要做一個消息提示功能,當(dāng)有用戶處理相關(guān)待辦信息后,別的用戶需要實時更新處理后的待辦信息。 解決方案: ? 1、使用最原始的方法,寫個定時器去查詢待辦信息。但這種方式在大多數(shù)情況是不被允許的,它會浪費系統(tǒng)中的許多資源,同時也并不是完全

    2024年04月15日
    瀏覽(22)
  • 【面試題精講】如何使用Stream的聚合功能

    【面試題精講】如何使用Stream的聚合功能

    有的時候博客內(nèi)容會有變動,首發(fā)博客是最新的,其他博客地址可能會未同步,認(rèn)準(zhǔn) https://blog.zysicyj.top 首發(fā)博客地址 系列文章地址 求和(Sum): 求平均值(Average): 最大值(Max): 最小值(Min): 計數(shù)(Count):可以使用 count() 方法來計算Stream中元素的個數(shù)。 連接字符串

    2024年02月09日
    瀏覽(23)
  • Python Flask 后端向前端推送信息——輪詢、SSE、WebSocket

    Python Flask 后端向前端推送信息——輪詢、SSE、WebSocket

    后端向前端推送信息,通知任務(wù)完成 輪詢 SSE WebSocket 請求方式 HTTP HTTP TCP長連接 觸發(fā)方式 輪詢 事件 事件 優(yōu)點 實現(xiàn)簡單易兼容 實現(xiàn)簡單開發(fā)成本低 全雙工通信,開銷小,安全,可擴(kuò)展 缺點 消耗較大 不兼容IE 傳輸數(shù)據(jù)需二次解析,開發(fā)成本大 適用場景 服務(wù)端向客戶端單向

    2023年04月19日
    瀏覽(51)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包