Создаем новое Spring WebSocket приложение (Java WebSocket шлет сообщение к JavaScript WebSocket) | Java, Spring WebSocket, Spring Boot, Maven
последнее обновление: 20 апреля 2025
Скачать пример:
На заметку! У вас должна быть установлена Java JDK . Если у вас ее нет то нужно скачать и установить Java JDK ...
На заметку! У вас должна быть установлена IntelliJ IDEA Ultimate . Если у вас ее нет то нужно скачать и установить IntelliJ IDEA Ultimate ...
На заметку! У вас должна быть установлен Tomcat Web Server . Если у вас это нет то нужно скачать и установить Tomcat Web Server ...
Шаг 1. Cоздаем новый проект с типом Spring Boot
Выбираем Spring Boots :
Так как у нас простой проект, то галочки не ставим:
Проект создался:
Шаг 2. Добавим библиотеки spring-boot-starter-web и spring-websocket в pom.xml файл
spring-boot-starter-web необходима для запуска нашего приложения в качестве веб-сервера.
spring-websocket библиотека с функциями веб-сокета.
<?xml version="1.0" encoding="UTF-8" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion> 4.0.0</modelVersion>
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-parent</artifactId>
<version> 3.4.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId> org.example</groupId>
<artifactId> MySpringWebSocket</artifactId>
<version> 0.0.1-SNAPSHOT</version>
<name> MySpringWebSocket</name>
<description> MySpringWebSocket</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version> 17</java.version>
</properties>
<dependencies>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter</artifactId>
</dependency>
<!-- web starter -->
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
</dependency>
<!-- web socket -->
<dependency>
<groupId> org.springframework</groupId>
<artifactId> spring-websocket</artifactId>
</dependency>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-test</artifactId>
<scope> test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Шаг 3. Создаем новый MyWebSocketHandler.java файл
Нажимаем правой клавишей мыши на папку моего пакета и создаем новый java файл
Напишем название MyWebSocketHandler
И выберем тип Class
Нажмем кнопку ввод
Файл создался.
Внутри файла MyWebSocketHandler.java добавим код:
Java
package org.example.myspringwebsocket;
import java.io.IOException;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void handleTextMessage (WebSocketSession session, TextMessage message)
throws InterruptedException, IOException {
String payload = message.getPayload();
session.sendMessage(new TextMessage("Today weather is good" ));
}
}
Шаг 4. Создаем новый MyWebSocketConfig.java файл
Нажимаем правой клавишей мыши на папку моего пакета и создаем новый java файл
Напишем название MyWebSocketConfig
И выберем тип Class
Нажмем кнопку ввод
Файл создался.
Внутри файла MyWebSocketConfig.java добавим код:
package org.example.myspringwebsocket;
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 MyWebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/mysocket1" ).setAllowedOrigins("*" );
}
}
Шаг 5. Запускаем проект и увидим как работает
Видим что наше приложение запускается:
1) Spring Boot инициализируется при запуске нашего приложения (потому что мы создавали наше приложение с типом Spring Boot )
2) дальше запускается Tomcat web сервер с портом 8080 (потому что в файл pom.xml добавили <dependency> ... spring-boot-starter-web ... </dependency> )
Наш web сервер работает вот его адрес:
http://localhost:8080
Так как мы запустили программу то web server создал web socket.
Чтобы проверить создадим у себя на диске новый файл
D:/1.html
Html
<script>
webSocket = new WebSocket('ws://localhost:8080/mysocket1'); // connect to server
webSocket .onopen = function(event) {
alert ("Connection open" );
webSocket .send("My name is Evgen" ); // send message to server
};
webSocket .onmessage = function(event) {
alert ("message from server: " + event.data); // message from server
};
</script>
Запустим этот файл 1.html и увидим: