91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用 Spring Boot 實現 WebSocket實時通信

發布時間:2020-08-27 00:17:53 來源:腳本之家 閱讀:210 作者:Oopsguy 欄目:編程語言

在開發 Web 應用程序時,我們有時需要將服務端事件推送到連接的客戶端。但 HTTP 并不能做到。客戶端打開與服務端的連接并請求數據,但服務端不能打開與客戶端的連接并推送數據。

為了解決這個限制,我們可以建立了一個輪詢模式,網頁會間隔地輪詢服務器以獲取新事件。但這種模式不太理想,因為它增加了 HTTP 開銷,速度也只能達到與輪詢的速率一樣快,并且給服務器增加了不必要的負載。

幸運的是,HTML5 WebSocket 出現了。WebSocket 協議允許瀏覽器與 Web 服務器之間進行低開銷的交互。在文中,我們將介紹 Websockets API,并展示如何使用 Spring Boot 實現 Websockets。

HTML5 來救場!

WebSockets 通過瀏覽器和服務器之間的單連接提供全雙工通信。它不存在 HTTP 開銷,并且允許服務器將消息實時推送到客戶端。

WebSocket API 實際上很簡單。您只需要創建一個 WebSocket 對象,附加事件監聽器和發送消息即可。

以下是一個例子:

var socket = new WebSocket('ws://' + window.location.host + '/my-websocket-endpoint');
 
// Add an event listener for when a connection is open
socket.onopen = function() {
 console.log('WebSocket connection opened. Ready to send messages.');
 
 // Send a message to the server
 socket.send('Hello, from WebSocket client!');
};
 
// Add an event listener for when a message is received from the server
socket.onmessage = function(message) {
 console.log('Message received from server: ' + message);
};

Spring Boot

Spring 對 WebSockets 接口提供了很好的支持。

首先,我們需要創建一個類,繼承 Spring 的 TextWebSocketHandler 類。

public class MyMessageHandler extends TextWebSocketHandler {
 
  @Override
  public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
    // The WebSocket has been closed
  }
 
  @Override
  public void afterConnectionEstablished(WebSocketSession session) throws Exception {
    // The WebSocket has been opened
    // I might save this session object so that I can send messages to it outside of this method
 
    // Let's send the first message
    session.sendMessage(new TextMessage("You are now connected to the server. This is the first message."));
  }
 
  @Override
  protected void handleTextMessage(WebSocketSession session, TextMessage textMessage) throws Exception {
    // A message has been received
    System.out.println("Message received: " + textMessage.getPayload());
  }
}

接下來,我們需要配置 WebSocket 端點。

@Configuration
@EnableWebSocket
public class WebsocketConfig implements WebSocketConfigurer {
 
  @Bean
  public WebSocketHandler myMessageHandler() {
    return new MyMessageHandler();
  }
 
  @Override
  public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(myMessageHandler(), "/my-websocket-endpoint");
  }
 
}

由于 WebSockets API 是純 JavaScript,您可以在大多數前端框架中它。包括 Angular,您可以在 TypeScript 中包含 JavaScript 代碼。

總結

是不是相當簡單?它解決了服務端和客戶端之間傳輸數據的一大困擾。Spring Boot 使它變得更加簡單。

原文鏈接:https://keyholesoftware.com/2017/04/10/websockets-with-spring-boot/
作者:THOMAS KENDALL
譯者:oopsguy.com

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸州市| 江川县| 江山市| 阿鲁科尔沁旗| 呼伦贝尔市| 东平县| 高州市| 抚远县| 和林格尔县| 南宫市| 大厂| 临澧县| 晋江市| 马鞍山市| 和林格尔县| 柏乡县| 石门县| 前郭尔| 乳山市| 海南省| 嵩明县| 东乌| 淳安县| 铜陵市| 平舆县| 宜州市| 大邑县| 久治县| 旬邑县| 霸州市| 托克逊县| 天峻县| 福泉市| 安多县| 青海省| 南溪县| 遂平县| 溧水县| 报价| 宁陵县| 平山县|