WebSocket হল একটি কমিউনিকেশন প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি স্থিতিশীল, দ্বিমুখী সংযোগ তৈরি করতে ব্যবহৃত হয়। এটি বিশেষ করে রিয়েল-টাইম অ্যাপ্লিকেশন যেমন চ্যাট অ্যাপ্লিকেশন, নোটিফিকেশন সিস্টেম, গেমস, ফিনান্সিয়াল ট্র্যাকিং ইত্যাদিতে ব্যবহার করা হয়।
Spring MVC তে WebSocket ব্যবহার করতে Spring WebSocket এবং STOMP প্রোটোকল ব্যবহার করা হয়, যা মেসেজিং লেভেলে সহায়ক হয়। WebSocket সংযোগ ব্যবস্থাপনার জন্য Spring Messaging এবং Spring WebSocket লাইব্রেরি ব্যবহৃত হয়। Spring Boot প্রকল্পে WebSocket কনফিগারেশন আরও সহজ হয়ে যায়, তবে সাধারণ Spring MVC প্রকল্পেও কনফিগারেশন করা যায়।
Spring MVC তে WebSocket কনফিগারেশন: ধাপ
Step 1: ডিপেনডেন্সি যোগ করা
Spring WebSocket এবং Spring Messaging এর জন্য নিম্নলিখিত ডিপেনডেন্সিগুলি pom.xml ফাইলে যোগ করতে হবে।
Maven Dependency:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.messaging</groupId>
<artifactId>spring-messaging</artifactId>
</dependency>
Step 2: WebSocket Configuration
Spring WebSocket কনফিগার করার জন্য @EnableWebSocket অ্যানোটেশন ব্যবহার করতে হয় এবং WebSocketConfigurer ইন্টারফেস ইমপ্লিমেন্ট করতে হয়।
WebSocketConfig.java:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/ws")
.addInterceptors(new HttpSessionHandshakeInterceptor()) // Optional, for session handling
.setAllowedOrigins("*"); // Allow all origins, or restrict to specific ones
}
}
Explanation:
@EnableWebSocket: Spring WebSocket সক্রিয় করার জন্য এই অ্যানোটেশন ব্যবহার করা হয়।WebSocketConfigurer: WebSocket হ্যান্ডলার রেজিস্টার করার জন্যWebSocketConfigurerইন্টারফেস ইমপ্লিমেন্ট করতে হয়।/ws: এই URL পাথের মাধ্যমে WebSocket কানেকশন সম্পন্ন হবে।setAllowedOrigins("*"): এই কনফিগারেশনটি সমস্ত উৎস থেকে কানেকশন অনুমতি দেয়। আপনি নির্দিষ্ট URL এর জন্য কানেকশন সীমিত করতে পারেন।
Step 3: WebSocket Handler তৈরি করা
WebSocketHandler কনফিগার করা হয় যে কোন WebSocket ক্লায়েন্টের সাথে সার্ভারের যোগাযোগ কীভাবে হবে।
MyWebSocketHandler.java:
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// Handle incoming message and send a response
String responseMessage = "Hello from server: " + message.getPayload();
session.sendMessage(new TextMessage(responseMessage)); // Send response back to client
}
}
Explanation:
TextWebSocketHandler:TextWebSocketHandlerইমপ্লিমেন্ট করে আপনি WebSocket সংযোগের মাধ্যমে প্রাপ্ত টেক্সট মেসেজগুলির প্রক্রিয়া করতে পারেন।handleTextMessage: এই মেথডে আপনি ক্লায়েন্ট থেকে প্রাপ্ত টেক্সট মেসেজ এবং সার্ভারের রেসপন্স মেসেজ পরিচালনা করবেন।session.sendMessage(): এখানে সার্ভার ক্লায়েন্টে একটি রেসপন্স পাঠাচ্ছে।
Step 4: JavaScript Client Setup
Client-Side WebSocket ব্যবহার করতে JavaScript এ WebSocket API ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে WebSocket ক্লায়েন্ট সার্ভারের সাথে কানেক্ট হয়ে মেসেজ পাঠাবে এবং সার্ভার থেকে মেসেজ গ্রহণ করবে।
client.html:
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Test</title>
</head>
<body>
<h2>WebSocket Test</h2>
<button onclick="sendMessage()">Send Message</button>
<div id="response"></div>
<script>
var socket = new WebSocket("ws://localhost:8080/ws"); // WebSocket URL
socket.onopen = function() {
console.log("Connected to WebSocket server.");
};
socket.onmessage = function(event) {
document.getElementById("response").innerText = "Server says: " + event.data;
};
socket.onclose = function() {
console.log("Disconnected from WebSocket server.");
};
function sendMessage() {
socket.send("Hello from client!"); // Send message to server
}
</script>
</body>
</html>
Explanation:
new WebSocket("ws://localhost:8080/ws"): এখানে WebSocket URL তৈরি করা হয়েছে, যেখানেws://localhost:8080/wsএর মাধ্যমে WebSocket সার্ভারের সাথে কানেকশন করা হবে।onopen: WebSocket কানেকশন সফল হলে এই ইভেন্ট ফায়ার হবে।onmessage: সার্ভার থেকে মেসেজ আসলে এই ইভেন্ট ফায়ার হবে এবং মেসেজটি<div>এর মধ্যে দেখানো হবে।sendMessage(): ক্লায়েন্ট থেকে সার্ভারে মেসেজ পাঠানোর জন্য এটি ব্যবহৃত হয়।
Step 5: Spring Boot Application Class
Spring Boot অ্যাপ্লিকেশনের মূল ক্লাস তৈরি করুন যাতে Spring Boot অ্যাপ্লিকেশন চালু করা যায়।
WebSocketApplication.java:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WebSocketApplication {
public static void main(String[] args) {
SpringApplication.run(WebSocketApplication.class, args);
}
}
Step 6: Testing the WebSocket Connection
- Run the Application: আপনার Spring Boot অ্যাপ্লিকেশন চালু করুন।
- Open the Client:
client.htmlফাইলটি একটি ব্রাউজারে খুলুন। - Send and Receive Messages: "Send Message" বাটনে ক্লিক করলে, ক্লায়েন্ট সার্ভারে মেসেজ পাঠাবে এবং সার্ভার থেকে একটি রেসপন্স পাবে।
উপসংহার:
Spring MVC তে WebSocket Integration করার মাধ্যমে আপনি ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম দ্বিমুখী যোগাযোগ ব্যবস্থা তৈরি করতে পারেন। এই পদ্ধতিটি চ্যাট অ্যাপ্লিকেশন, নোটিফিকেশন, গেমিং বা অন্যান্য রিয়েল-টাইম অ্যাপ্লিকেশনে ব্যবহৃত হয়। Spring WebSocket এবং STOMP প্রোটোকল ব্যবহার করে আপনি WebSocket সংযোগ পরিচালনা করতে পারেন। Spring MVC এবং WebSocket এর মধ্যে ইন্টিগ্রেশন বেশ সোজা, এবং আপনি খুব সহজেই Spring Boot অ্যাপ্লিকেশনে এই প্রযুক্তি ব্যবহার করতে পারবেন।
Read more