Pernahkah Anda bertanya-tanya bagaimana komunikasi waktu nyata dalam aplikasi bekerja? Anda tahu, notifikasi instan, obrolan langsung, dan pembaruan waktu nyata itu? Nah, itu semua berkat WebSocket. Dan ketika dikombinasikan dengan Spring Boot, Anda memiliki alat yang ampuh untuk membuat aplikasi web interaktif. Hari ini, kita akan menyelami dunia Spring Boot WebSocket. Pada akhir postingan ini, Anda akan memiliki pemahaman yang kuat tentang cara mengimplementasikan dan memanfaatkan WebSocket di aplikasi Spring Boot Anda. Kami juga akan membahas tentang mengintegrasikannya dengan alat seperti Apidog untuk menyederhanakan manajemen API Anda.
Apa itu WebSocket?
WebSocket adalah protokol komunikasi yang menyediakan saluran komunikasi dua arah penuh melalui satu koneksi TCP. Tidak seperti permintaan HTTP tradisional, yang bersifat setengah dupleks, WebSocket memungkinkan koneksi persisten antara klien dan server. Ini berarti keduanya dapat mengirim dan menerima pesan secara independen, menjadikannya ideal untuk aplikasi waktu nyata.

Mengapa Menggunakan Spring Boot dengan WebSocket?
Spring Boot menyederhanakan pengembangan aplikasi berbasis Spring mandiri dan berkualitas produksi. Ini mengurangi jumlah kode boilerplate dan menyediakan dukungan langsung untuk WebSocket. Menggabungkan Spring Boot dengan WebSocket memungkinkan pengembang untuk membuat aplikasi waktu nyata yang terukur, mudah dipelihara, dan efisien dengan pengaturan minimal.

Memulai dengan Spring Boot WebSocket
Mari kita langsung masuk ke pengaturan aplikasi Spring Boot dengan dukungan WebSocket. Kita akan mulai dari awal dan membangun aplikasi obrolan sederhana.
Langkah 1: Siapkan Proyek Spring Boot Anda
Pertama, buat proyek Spring Boot baru. Anda dapat menggunakan Spring Initializr untuk ini. Pilih dependensi berikut:
- Spring Web
- WebSocket
Hasilkan proyek dan unzip file yang diunduh. Buka di IDE favorit Anda.

Langkah 2: Konfigurasikan WebSocket di Spring Boot
Sekarang, kita perlu mengkonfigurasi WebSocket di aplikasi Spring Boot kita. Buat kelas konfigurasi baru:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
}
Dalam konfigurasi ini, kita mengaktifkan message broker WebSocket dan mendefinisikan endpoint /chat
yang akan digunakan klien untuk terhubung. Metode withSockJS()
memungkinkan opsi fallback SockJS untuk browser yang tidak mendukung WebSocket.
Langkah 3: Buat Model Pesan
Selanjutnya, kita membutuhkan model untuk mewakili pesan obrolan kita. Buat POJO sederhana:
public class ChatMessage {
private String content;
private String sender;
// Getters and setters
}
Langkah 4: Buat Pengontrol Pesan
Kita membutuhkan pengontrol untuk menangani pesan WebSocket yang masuk. Buat kelas pengontrol baru:
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
@Controller
public class ChatController {
@MessageMapping("/sendMessage")
@SendTo("/topic/messages")
public ChatMessage sendMessage(ChatMessage chatMessage) {
return chatMessage;
}
}
Dalam pengontrol ini, kita memetakan pesan masuk yang dikirim ke /app/sendMessage
dan menyiarkannya ke semua pelanggan /topic/messages
.
Langkah 5: Buat Frontend untuk Menguji WebSocket
Untuk menguji pengaturan WebSocket kita, mari buat halaman HTML sederhana. Tempatkan file ini di direktori src/main/resources/static
dan beri nama index.html
:
<!DOCTYPE html>
<html>
<head>
<title>Spring Boot WebSocket Chat</title>
<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1.5.0/dist/sockjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/stompjs@2.3.3/lib/stomp.min.js"></script>
</head>
<body>
<h1>Spring Boot WebSocket Chat</h1>
<div>
<input type="text" id="sender" placeholder="Nama Anda">
<input type="text" id="message" placeholder="Pesan">
<button onclick="sendMessage()">Kirim</button>
</div>
<div id="messages"></div>
<script>
var stompClient = null;
function connect() {
var socket = new SockJS('/chat');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/messages', function (chatMessage) {
showMessage(JSON.parse(chatMessage.body));
});
});
}
function sendMessage() {
var sender = document.getElementById('sender').value;
var message = document.getElementById('message').value;
stompClient.send("/app/sendMessage", {}, JSON.stringify({'sender': sender, 'content': message}));
}
function showMessage(message) {
var messages = document.getElementById('messages');
var messageElement = document.createElement('div');
messageElement.appendChild(document.createTextNode(message.sender + ": " + message.content));
messages.appendChild(messageElement);
}
window.onload = connect;
</script>
</body>
</html>
File HTML sederhana ini menyertakan formulir untuk memasukkan pesan dan div untuk menampilkannya. Ini menggunakan SockJS dan STOMP untuk menangani komunikasi WebSocket.
Langkah 6: Jalankan Aplikasi
Jalankan aplikasi Spring Boot Anda dan buka http://localhost:8080
di browser Anda. Buka URL yang sama di beberapa tab untuk melihat obrolan waktu nyata beraksi.
Men-debug Springboot WebSocket dengan Apidog
Apidog adalah alat yang fantastis untuk dokumentasi dan pengujian API. Ini menyederhanakan proses pendokumentasian dan pengujian API Spring Boot WebSocket Anda. Ini menyediakan antarmuka yang ramah pengguna untuk membuat koneksi WebSocket, mengirim dan menerima pesan, dan mendokumentasikan API.
Berikut adalah cara Anda dapat menggunakan Apidog untuk men-debug klien WebSocket:
- Buka Apidog: Pertama, mulai aplikasi Apidog dan klik tombol "+" di sisi kiri, Sebuah drop-down baru akan dibuka. Dari sana pilih "API WebSocket Baru":

2. Buat Koneksi: Mulailah dengan memasukkan URL API WebSocket di bilah alamat Apidog. Anda kemudian dapat mengklik tombol "Hubungkan" untuk memulai proses handshake dan membuat koneksi. Apidog memungkinkan Anda untuk menyesuaikan parameter seperti Params, Headers, dan Cookies selama handshake.

3. Kirim dan Terima Pesan: Setelah koneksi dibuat, Anda dapat mengirim pesan di bawah tab "Pesan". Anda dapat menulis teks, JSON, XML, HTML, dan pesan format teks lainnya, serta pesan format biner menggunakan Base64 atau Hexadecimal. Tampilan timeline baru Apidog menunjukkan status koneksi, pesan yang dikirim, dan pesan yang diterima dalam urutan kronologis. Saat Anda mengklik pesan, Anda dapat dengan mudah melihat detailnya.

4. Dokumentasi API: Apidog mewarisi fungsionalitas dokumentasi API yang kuat untuk API WebSocket, memungkinkan Anda untuk mendokumentasikan interaksi WebSocket Anda secara efektif.

Ingatlah untuk memeriksa masalah WebSocket umum seperti masalah koneksi, kesalahan format pesan, dan masalah keamanan selama proses debugging Anda.
Kesimpulan
Dalam postingan ini, kita telah menjelajahi cara menyiapkan aplikasi obrolan waktu nyata menggunakan Spring Boot WebSocket. Kita mulai dengan mengkonfigurasi WebSocket dalam proyek Spring Boot, membuat aplikasi obrolan sederhana, dan mengintegrasikannya dengan Apidog untuk manajemen API yang lebih baik. Dengan WebSocket dan Spring Boot, Anda dapat membangun aplikasi waktu nyata yang efisien yang memberikan pengalaman pengguna yang mulus. Dengan memanfaatkan alat seperti Apidog, Anda dapat meningkatkan alur kerja pengembangan Anda, memastikan API Anda didokumentasikan, diuji, dan dipantau dengan baik.
Komunikasi waktu nyata adalah pengubah permainan untuk aplikasi web modern. Baik itu untuk obrolan langsung, notifikasi, atau alat kolaborasi, menguasai WebSocket dengan Spring Boot membuka dunia kemungkinan.