Uygulamalarda gerçek zamanlı iletişimin nasıl çalıştığını hiç merak ettiniz mi? Bildiğiniz gibi, anlık bildirimler, canlı sohbetler ve gerçek zamanlı güncellemeler? Bunun hepsi WebSockets sayesinde. Ve Spring Boot ile birleştirildiğinde, etkileşimli web uygulamaları oluşturmak için güçlü bir araca sahip olursunuz. Bugün, Spring Boot WebSocket dünyasına derinlemesine dalıyoruz. Bu yazının sonunda, Spring Boot uygulamalarınızda WebSockets'i nasıl uygulayacağınız ve kullanacağınız konusunda sağlam bir anlayışa sahip olacaksınız. Ayrıca, API yönetiminizi kolaylaştırmak için Apidog gibi araçlarla entegrasyonuna da değineceğiz.
WebSocket Nedir?
WebSocket, tek bir TCP bağlantısı üzerinden tam çift yönlü iletişim kanalları sağlayan bir iletişim protokolüdür. Yarı çift yönlü olan geleneksel HTTP isteklerinden farklı olarak, WebSocket istemci ve sunucu arasında kalıcı bir bağlantıya izin verir. Bu, her ikisinin de bağımsız olarak mesaj gönderip alabileceği anlamına gelir ve bu da onu gerçek zamanlı uygulamalar için ideal hale getirir.

Neden Spring Boot'u WebSocket ile Kullanmalısınız?
Spring Boot, bağımsız, üretim kalitesinde Spring tabanlı uygulamaların geliştirilmesini basitleştirir. Hazır kod miktarını azaltır ve WebSockets için kullanıma hazır destek sağlar. Spring Boot'u WebSocket ile birleştirmek, geliştiricilerin minimum kurulumla ölçeklenebilir, bakımı yapılabilir ve verimli gerçek zamanlı uygulamalar oluşturmasına olanak tanır.

Spring Boot WebSocket'e Başlarken
Hemen bir Spring Boot uygulamasını WebSocket desteğiyle kurmaya başlayalım. Sıfırdan başlayıp basit bir sohbet uygulaması oluşturacağız.
Adım 1: Spring Boot Projenizi Kurun
İlk olarak, yeni bir Spring Boot projesi oluşturun. Bunun için Spring Initializr'ı kullanabilirsiniz. Aşağıdaki bağımlılıkları seçin:
- Spring Web
- WebSocket
Projeyi oluşturun ve indirilen dosyayı açın. En sevdiğiniz IDE'nizde açın.

Adım 2: Spring Boot'ta WebSocket'i Yapılandırın
Şimdi, Spring Boot uygulamamızda WebSocket'i yapılandırmamız gerekiyor. Yeni bir yapılandırma sınıfı oluşturun:
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");
}
}
Bu yapılandırmada, WebSocket mesaj aracısını etkinleştiriyoruz ve istemcilerin bağlanmak için kullanacağı bir uç nokta /chat
tanımlıyoruz. withSockJS()
yöntemi, WebSocket'i desteklemeyen tarayıcılar için SockJS yedek seçeneklerine izin verir.
Adım 3: Bir Mesaj Modeli Oluşturun
Ardından, sohbet mesajlarımızı temsil etmek için bir modele ihtiyacımız var. Basit bir POJO oluşturun:
public class ChatMessage {
private String content;
private String sender;
// Getters and setters
}
Adım 4: Bir Mesaj Kontrolcüsü Oluşturun
Gelen WebSocket mesajlarını işlemek için bir kontrolcüye ihtiyacımız var. Yeni bir kontrolcü sınıfı oluşturun:
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;
}
}
Bu kontrolcide, /app/sendMessage
'ye gönderilen gelen mesajları eşleştiriyoruz ve bunları /topic/messages
'ın tüm abonelerine yayınlıyoruz.
Adım 5: WebSocket'i Test Etmek İçin Ön Uç Oluşturun
WebSocket kurulumumuzu test etmek için basit bir HTML sayfası oluşturalım. Bu dosyayı src/main/resources/static
dizinine yerleştirin ve index.html
olarak adlandırın:
<!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="Adınız">
<input type="text" id="message" placeholder="Mesaj">
<button onclick="sendMessage()">Gönder</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>
Bu basit HTML dosyası, mesaj girmek için bir form ve bunları görüntülemek için bir div içerir. WebSocket iletişimini işlemek için SockJS ve STOMP kullanır.
Adım 6: Uygulamayı Çalıştırın
Spring Boot uygulamanızı çalıştırın ve tarayıcınızda http://localhost:8080
adresini açın. Gerçek zamanlı sohbeti görmek için aynı URL'yi birden fazla sekmede açın.
Apidog ile Springboot WebSockets'in Hata Ayıklaması
Apidog, API dokümantasyonu ve test için harika bir araçtır. Spring Boot WebSocket API'lerinizi belgelemeyi ve test etmeyi basitleştirir. WebSocket bağlantıları kurmak, mesaj göndermek ve almak ve API'leri belgelemek için kullanıcı dostu bir arayüz sağlar.
Apidog'u bir WebSocket istemcisinde hata ayıklamak için nasıl kullanabileceğiniz aşağıda açıklanmıştır:
- Apidog'u Açın: İlk olarak, Apidog uygulamasını başlatın ve sol taraftaki "+" düğmesine tıklayın, Yeni bir açılır menü açılacaktır. Oradan "Yeni WebSocket API"'yi seçin:

2. Bir Bağlantı Kurun: WebSocket API URL'sini Apidog'un adres çubuğuna girerek başlayın. Daha sonra el sıkışma işlemini başlatmak ve bir bağlantı kurmak için "Bağlan" düğmesine tıklayabilirsiniz. Apidog, el sıkışma sırasında Parametreler, Başlıklar ve Çerezler gibi parametreleri özelleştirmenize olanak tanır.

3. Mesaj Gönderin ve Alın: Bağlantı kurulduktan sonra, "Mesaj" sekmesi altında mesaj gönderebilirsiniz. Metin, JSON, XML, HTML ve diğer metin formatı mesajlarının yanı sıra Base64 veya Onaltılık kullanarak ikili format mesajları yazabilirsiniz. Apidog'un yeni zaman çizelgesi görünümü, bağlantı durumunu, gönderilen mesajları ve alınan mesajları kronolojik sırayla gösterir. Bir mesaja tıkladığınızda, ayrıntılarını kolayca görüntüleyebilirsiniz.

4. API Dokümantasyonu: Apidog, WebSocket etkileşimlerinizi etkili bir şekilde belgelemeye olanak tanıyarak, WebSocket API'leri için sağlam API dokümantasyon işlevselliğini miras alır.

Hata ayıklama işleminiz sırasında bağlantı sorunları, mesaj formatı hataları ve güvenlik endişeleri gibi yaygın WebSocket sorunlarını kontrol etmeyi unutmayın.
Sonuç
Bu yazıda, Spring Boot WebSocket kullanarak gerçek zamanlı bir sohbet uygulamasının nasıl kurulacağını inceledik. Bir Spring Boot projesinde WebSocket'i yapılandırarak başladık, basit bir sohbet uygulaması oluşturduk ve daha iyi API yönetimi için Apidog ile entegre ettik. WebSockets ve Spring Boot ile, kesintisiz bir kullanıcı deneyimi sağlayan verimli, gerçek zamanlı uygulamalar oluşturabilirsiniz. Apidog gibi araçlardan yararlanarak, API'lerinizin iyi belgelenmesini, test edilmesini ve izlenmesini sağlayarak geliştirme iş akışınızı geliştirebilirsiniz.
Gerçek zamanlı iletişim, modern web uygulamaları için oyunun kurallarını değiştiriyor. İster canlı sohbet, ister bildirimler veya işbirliği araçları için olsun, Spring Boot ile WebSocket'te ustalaşmak bir olasılıklar dünyasının kapılarını açar.