Rumah  >  Artikel  >  Java  >  Cara menggunakan WebSocket untuk melaksanakan fungsi sembang segera di Java

Cara menggunakan WebSocket untuk melaksanakan fungsi sembang segera di Java

王林
王林asal
2023-12-18 08:43:581098semak imbas

Cara menggunakan WebSocket untuk melaksanakan fungsi sembang segera di Java

Cara menggunakan WebSocket untuk melaksanakan fungsi sembang segera di Java

Dengan perkembangan pesat Internet, pemesejan segera telah menjadi bahagian yang amat diperlukan dalam kehidupan orang ramai. Sebagai protokol komunikasi dupleks penuh, WebSocket telah menggantikan protokol HTTP tradisional secara beransur-ansur dan menjadi salah satu teknologi penting untuk merealisasikan fungsi pemesejan segera. Artikel ini akan memperkenalkan cara menggunakan WebSocket untuk melaksanakan fungsi sembang segera dalam Java dan memberikan contoh kod khusus.

Pertama sekali, kita perlu menyediakan persekitaran dan alatan berikut:

  1. JDK 1.8 atau lebih tinggi
  2. Maven build tool
  3. IDE, seperti Eclipse atau IntelliJ IDEA

Seterusnya, kita mulakan fungsinya.

Langkah 1: Cipta pelayan WebSocket berasaskan Java
Kami menggunakan rangka kerja Spring Boot dalam Java untuk mencipta pelayan WebSocket. Spring Boot menyediakan API mesra pembangun WebSocket dan konfigurasi yang mudah. Sebelum mencipta pelayan WebSocket, kita perlu mencipta projek Spring Boot.

Mula-mula, buat projek Spring Boot baharu dalam IDE dan perkenalkan kebergantungan berikut:

<dependencies>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-websocket</artifactId>
   </dependency>
</dependencies>

Kemudian, buat kelas konfigurasi bernama WebSocketConfig dan tambah kod berikut:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(chatWebSocketHandler(), "/chat").setAllowedOrigins("*");
    }

    @Bean
    public WebSocketHandler chatWebSocketHandler() {
        return new ChatWebSocketHandler();
    }

}

Dalam kod di atas, kami lulus Anotasi @EnableWebSocket mendayakan WebSocket dan mendaftarkan pengendali WebSocket bernama chatWebSocketHandler melalui kaedah registerWebSocketHandlers. Laluan pemproses ialah "/chat", kita boleh menyesuaikan laluan mengikut keperluan. @EnableWebSocket注解启用WebSocket,并通过registerWebSocketHandlers方法注册了一个名为chatWebSocketHandler的WebSocket处理器。处理器的路径是"/chat",我们可以根据需要自定义路径。

第二步:实现WebSocket处理器
接下来,我们需要实现WebSocket处理器来处理和管理WebSocket连接。在这个处理器中,我们将实现接收和发送消息的功能。

创建一个名为ChatWebSocketHandler的类,并实现WebSocketHandler接口。在这个类中,我们需要重写一些方法:

public class ChatWebSocketHandler extends TextWebSocketHandler {

    private static final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        sessions.add(session);
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        for (WebSocketSession webSocketSession : sessions) {
            webSocketSession.sendMessage(message);
        }
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        sessions.remove(session);
    }
}

在上述代码中,我们使用了一个sessions列表来管理所有连接的WebSocket会话。afterConnectionEstablished方法在建立连接后会被调用,我们将会话添加到列表中。handleTextMessage方法用于接收和处理消息,我们将接收到的消息发送给所有连接的会话。afterConnectionClosed方法在连接关闭后会被调用,我们需要将会话从列表中移除。

第三步:前端页面
最后,我们需要创建一个前端页面来实现用户的即时聊天功能。

在项目的static文件夹中创建一个名为chat.html的HTML文件,并添加以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>Chat</title>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
    <div id="messages"></div>
    <input id="input" type="text" />
    <button id="send">Send</button>

    <script>
        var socket = new WebSocket("ws://localhost:8080/chat");

        socket.onmessage = function(event) {
            var message = event.data;
            $("#messages").append("<p>" + message + "</p>");
        };

        $("#send").click(function() {
            var message = $("#input").val();
            socket.send(message);
            $("#input").val("");
        });
    </script>
</body>
</html>

在上述代码中,我们通过WebSocket对象与服务器建立连接,并使用onmessage事件处理接收到的消息。当用户点击Send按钮时,我们将输入框中的文本发送给服务器。

到此为止,我们已经完成了在Java中利用WebSocket实现即时聊天功能的全部代码。接下来,我们对整个流程进行一下简单的说明。

用户通过浏览器访问chat.html页面,与服务器建立WebSocket连接。当用户在输入框中输入消息并点击Send按钮时,浏览器将发送消息给服务器。服务器收到消息后,会将消息发送给所有连接的会话。会话收到消息后,会将其展示在页面上。

运行项目后,多个用户可以通过访问chat.html

Langkah 2: Laksanakan pemproses WebSocket

Seterusnya, kita perlu melaksanakan pemproses WebSocket untuk mengendalikan dan mengurus sambungan WebSocket. Dalam pemproses ini, kami akan melaksanakan fungsi menerima dan menghantar mesej.

🎜Buat kelas bernama ChatWebSocketHandler dan laksanakan antara muka WebSocketHandler. Dalam kelas ini, kita perlu mengatasi beberapa kaedah: 🎜rrreee🎜Dalam kod di atas, kami menggunakan senarai sesi untuk mengurus semua sesi WebSocket yang disambungkan. Kaedah afterConnectionEstablished akan dipanggil selepas sambungan diwujudkan dan kami menambah sesi pada senarai. Kaedah handleTextMessage digunakan untuk menerima dan memproses mesej Kami menghantar mesej yang diterima ke semua sesi yang disambungkan. Kaedah afterConnectionClosed akan dipanggil selepas sambungan ditutup dan kami perlu mengalih keluar sesi daripada senarai. 🎜🎜Langkah 3: Halaman hadapan🎜Akhir sekali, kita perlu mencipta halaman hadapan untuk melaksanakan fungsi sembang segera pengguna. 🎜🎜Buat fail HTML bernama chat.html dalam folder statik projek dan tambah kod berikut: 🎜rrreee🎜Dalam kod di atas, kami lulus WebSocket Objek mewujudkan sambungan dengan pelayan dan mengendalikan mesej yang diterima menggunakan acara onmessage. Apabila pengguna mengklik butang Hantar, kami menghantar teks dalam kotak input ke pelayan. 🎜🎜Setakat ini, kami telah melengkapkan semua kod untuk melaksanakan fungsi sembang segera menggunakan WebSocket dalam Java. Seterusnya, kami memberikan penjelasan ringkas tentang keseluruhan proses. 🎜🎜Pengguna mengakses halaman chat.html melalui penyemak imbas dan mewujudkan sambungan WebSocket dengan pelayan. Apabila pengguna memasukkan mesej dalam kotak input dan mengklik butang Hantar, pelayar akan menghantar mesej ke pelayan. Selepas pelayan menerima mesej, ia menghantar mesej ke semua sesi yang disambungkan. Selepas sesi menerima mesej, ia memaparkannya pada halaman. 🎜🎜Selepas menjalankan projek, berbilang pengguna boleh melaksanakan fungsi sembang segera dengan mengakses halaman chat.html. 🎜🎜Ringkasnya, artikel ini memperkenalkan cara menggunakan WebSocket untuk melaksanakan fungsi sembang segera dalam Java dan menyediakan contoh kod khusus. Harap artikel ini membantu anda! 🎜

Atas ialah kandungan terperinci Cara menggunakan WebSocket untuk melaksanakan fungsi sembang segera di Java. 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