亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

使用 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

仲巴县| 北安市| 栾城县| 秭归县| 丹凤县| 长子县| 宁城县| 信丰县| 丰城市| 鄂托克旗| 宾川县| 漾濞| 施秉县| 团风县| 临海市| 克什克腾旗| 绥宁县| 本溪市| 平潭县| 凤台县| 新蔡县| 阳新县| 纳雍县| 车险| 水富县| 永和县| 囊谦县| 陵川县| 阳山县| 承德市| 洞口县| 佛学| 昌江| 宿迁市| 安岳县| 五常市| 怀化市| 公主岭市| 芦山县| 海兴县| 英超|