有的时候博客内容会有变动,首发博客是最新的,其余博客地址可能会未同步,认准https://blog.zysicyj.top

首发博客地址

系列文章地址


什么是WebSocket?

WebSocket是一种在Web应用程序中实现双向通信的协定。它容许在客户端和服务器之间建设长久的、全双工的连贯,以便实时地发送数据。

传统的HTTP协定是一种无状态的申请-响应协定,客户端发送申请,服务器返回响应,而后连贯立刻敞开。这种模型实用于大多数Web应用程序,但对于须要实时数据更新或双向通信的应用程序来说,它并不现实。

WebSocket通过在客户端和服务器之间建设短暂的TCP连贯,提供了一种持久性的通信通道。它通过在HTTP握手过程中降级连贯,从而容许在同一个连贯上进行双向通信。

WebSocket的特点包含:

  1. 双向通信:WebSocket容许客户端和服务器之间双向发送数据,而不仅仅是客户端向服务器发送申请。
  2. 实时性:WebSocket提供了高效的实时数据传输,能够在数据可用时立刻将其推送给客户端。
  3. 较低的开销:WebSocket应用较少的网络开销,因为它应用长久连贯而不须要频繁的握手和头部信息。
  4. 兼容性:WebSocket协定曾经失去了宽泛的反对,古代的Web浏览器和服务器都能够很好地反对WebSocket。

WebSocket在许多实时应用程序中失去广泛应用,例如聊天应用程序、实时合作工具、股票市场报价、多人游戏等。它提供了一种弱小的机制,使得开发者能够轻松实现实时和双向的Web应用程序。

Spring Boot如何实现WebSocket

在Spring Boot中,能够应用Spring WebSocket模块来实现WebSocket性能。以下是应用Spring Boot实现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. 创立一个WebSocket处理器类:创立一个类,实现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端点:创立一个配置类,继承自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@EnableWebSocketpublic class WebSocketConfig implements WebSocketConfigurer {    @Override    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {        registry.addHandler(new MyWebSocketHandler(), "/websocket").setAllowedOrigins("*");    }}
  1. 启动应用程序:编写一个Spring Boot启动类,并增加@SpringBootApplication注解来启动应用程序。
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class MyApplication {    public static void main(String[] args) {        SpringApplication.run(MyApplication.class, args);    }}

通过这些步骤,您能够在Spring Boot中实现WebSocket性能。客户端能够应用JavaScript的WebSocket
对象或其余WebSocket客户端库来连贯到您的WebSocket端点。

请留神,上述代码只是一个根本示例,您能够依据理论需要进行更简单的WebSocket实现。另外,还能够应用@MessageMapping
注解来解决特定音讯类型,应用SimpMessagingTemplate发送音讯给订阅了特定主题的客户端等。

前端如何与websocket通信

在前端解决WebSocket连贯和音讯,您能够应用JavaScript的WebSocket API来实现。以下是根本的前端解决步骤:

  1. 创立WebSocket对象:应用WebSocket构造函数创立一个WebSocket对象,并传入WebSocket服务器的URL。
var socket = new WebSocket("ws://localhost:8080/your-application/websocket");
  1. 监听WebSocket事件:通过WebSocket对象的事件处理程序,监听WebSocket的连贯状态和音讯事件。
socket.onopen = function () {    // 连贯建设后的操作};socket.onclose = function () {    // 连贯敞开后的操作};socket.onerror = function (error) {    // 错误处理};socket.onmessage = function (event) {    var message = event.data;    // 解决收到的音讯};
  1. 发送音讯:应用WebSocket对象的send办法发送音讯到WebSocket服务器。
socket.send("Hello, server!");
  1. 敞开连贯:应用WebSocket对象的close办法敞开WebSocket连贯。
socket.close();

通过这些步骤,您能够在前端解决WebSocket连贯和音讯。您能够依据理论需要,在事件处理程序中实现您的业务逻辑,例如更新UI、发送和接收数据等。

请留神,WebSocket连贯是异步的,所以您须要适当解决连贯建设、敞开和谬误事件。此外,还能够应用其余WebSocket库(如Socket.io、SockJS等)来简化WebSocket解决,并提供更多高级性能,如主动重连、心跳检测等。

如何应用Python与websocket通信

要实现Python和Spring Boot WebSocket的通信,能够应用Python的WebSocket客户端库与Spring Boot的WebSocket服务器进行通信。以下是一种常见的实现形式:

  1. 装置WebSocket客户端库:应用Python的包管理工具(如pip)装置websocket-client库。
pip install websocket-client
  1. 在Python中创立WebSocket连贯:在Python代码中导入websocket库,并创立一个WebSocket连贯到Spring Boot的WebSocket服务器。
import websocketdef on_message(ws, message):    # 解决收到的音讯    print(f"Received: {message}")def on_error(ws, error):    # 处理错误    print(f"Error: {error}")def on_close(ws):    # 解决连贯敞开    print("Connection closed")def on_open(ws):    # 解决连贯建设    print("Connection established")    # 发送音讯    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_openws.run_forever()
  1. 在Spring Boot中解决WebSocket音讯:在您的Spring Boot应用程序中创立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;@Componentpublic class MyWebSocketHandler extends TextWebSocketHandler {    @Override    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {        // 解决收到的音讯        System.out.println("Received: " + message.getPayload());        // 发送音讯给Python客户端        session.sendMessage(new TextMessage("Hello from Spring Boot!"));    }}

确保WebSocket端点的URL门路在Python和Spring Boot代码中匹配,并依据理论状况进行调整。

通过这些步骤,您能够在Python和Spring Boot之间建设WebSocket通信。当Python客户端发送音讯时,Spring
Boot服务器将接管并解决该音讯,并能够向Python客户端发送响应音讯。

本文由mdnice多平台公布