Rumah  >  Artikel  >  Java  >  Menggunakan WebSocket dalam Spring Boot untuk melaksanakan fungsi tolak dan pemberitahuan

Menggunakan WebSocket dalam Spring Boot untuk melaksanakan fungsi tolak dan pemberitahuan

PHPz
PHPzasal
2023-06-23 11:47:501607semak imbas

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.

  1. Buat projek Spring Boot

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>
  1. Mengkonfigurasi WebSocket

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.

  1. Menulis pengendali 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.

  1. Buat Pelanggan WebSocket

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.

  1. Jalankan projek

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.

  1. Ringkasan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn