Dalam pembangunan aplikasi web moden, WebSocket ialah teknologi biasa untuk komunikasi segera dan penghantaran data masa nyata. Rangka kerja Spring Boot menyediakan sokongan untuk WebSocket bersepadu, menjadikannya sangat mudah untuk pembangun melaksanakan fungsi tolak dan pemberitahuan.
Artikel ini akan memperkenalkan cara menggunakan WebSocket untuk melaksanakan fungsi tolak dan pemberitahuan dalam Spring Boot, dan menunjukkan pelaksanaan ruang sembang dalam talian masa nyata yang ringkas.
Pertama, kita perlu mencipta projek Spring Boot. Anda boleh membuat projek baharu dengan cepat menggunakan kebergantungan web dan WebSocket pada tapak web Spring Initializr. Kodnya adalah seperti berikut:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies>
Seterusnya, kita perlu mengkonfigurasi WebSocket supaya ia boleh dijalankan dalam aplikasi Spring Boot.
Pertama, kita perlu menambah atribut berikut pada fail konfigurasi aplikasi:
spring.websocket.enabled=true
Seterusnya, tambahkan anotasi @EnableWebSocket
pada kelas konfigurasi Spring Boot untuk mendayakan sokongan WebSocket. Pada masa yang sama, kita perlu melaksanakan antara muka WebSocketConfigurer
dan mendaftarkan pengendali serta pemintas mesej di dalamnya untuk mengendalikan permintaan dan mesej WebSocket.
Kod adalah seperti berikut:
@Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new WebSocketHandler(), "/chat").setAllowedOrigins("*").withSockJS(); } }
Dalam kod di atas, kami mendaftarkan pengendali (iaitu WebSocketHandler) yang dipanggil apabila pelanggan menyambung ke titik akhir "/chat". Gunakan kaedah setAllowedOrigins
untuk menentukan asal yang dibenarkan untuk permintaan silang asal, dan kaedah withSockJS
untuk mendayakan sokongan SockJS untuk keserasian dengan penyemak imbas yang tidak menyokong WebSocket.
Sekarang kita perlu menulis kelas pengendali yang akan mengendalikan semua permintaan dan mesej WebSocket.
Dalam Spring Boot, kelas ini hanya perlu melaksanakan antara muka WebSocketHandler
. Kami akan menggunakan kelas SimpeTextWebSocketHandler
, yang menyediakan fungsi asas untuk mengendalikan mesej WebSocket dan di mana kami boleh melanjutkan pengendali kami sendiri.
Kod adalah seperti berikut:
public class WebSocketHandler extends TextWebSocketHandler { private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { for (WebSocketSession s : sessions) { if (s.isOpen() && !s.equals(session)) { s.sendMessage(message); } } } }
Dalam kod di atas, kaedah afterConnectionEstablished
dipanggil apabila sesi WebSocket baharu diwujudkan dan kaedah afterConnectionClosed
dipanggil apabila WebSocket sesi ditutup. Kaedah handleTextMessage
mengendalikan semua mesej WebSocket dan menghantarnya kepada semua pelanggan yang sedang bersambung.
Sekarang, kita perlu mencipta klien WebSocket untuk menguji fungsi tolak dan pemberitahuan pelaksanaan. Anda boleh menggunakan API WebSocket JavaScript untuk mencipta klien WebSocket.
Kodnya adalah seperti berikut:
const socket = new WebSocket('ws://localhost:8080/chat'); socket.onopen = function() { console.log('连接已建立'); }; socket.onmessage = function(event) { console.log('收到消息:', event.data); }; socket.onerror = function(error) { console.log('发生错误:', error); }; socket.onclose = function() { console.log('连接已关闭'); };
Dalam kod di atas, kami mencipta contoh WebSocket dan cuba menyambung ke ws:// localhost:8080 / chat
. Kami kemudian mendengar acara WebSocket untuk acara buka, tutup, ralat dan mesej.
Sekarang kita boleh memulakan aplikasi Spring Boot dan menguji fungsi tolak dan pemberitahuan. Kami boleh menggunakan dua atau lebih pelanggan WebSocket untuk menyamar sebagai pengguna yang berbeza dan memasukkan mesej dalam satu pelanggan dan menyiarkannya kepada pelanggan lain dalam semua sesi.
Gunakan Maven untuk menjalankan perintah spring-boot:run
untuk memulakan aplikasi.
Sekarang, buka berbilang tetingkap penyemak imbas dan buat klien WebSocket dalam setiap tetingkap. Masukkan mesej anda dan tekan butang hantar untuk menolak mesej kepada pelanggan WebSocket lain dalam semua sesi yang anda sedang bersembang.
Dalam tutorial ini, kami telah mempelajari cara menggunakan Spring Boot dan WebSocket untuk melaksanakan fungsi tolak dan pemberitahuan. Dengan sokongan WebSocket, kami boleh mencipta aplikasi masa nyata, kolaboratif dan multicast yang meningkatkan pengalaman pengguna dan meningkatkan nilai aplikasi.
Atas ialah kandungan terperinci Menggunakan WebSocket dalam Spring Boot untuk melaksanakan fungsi tolak dan pemberitahuan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!