সার্ভলেটস (Servlets) এবং WebSocket Integration Java Technologies-এ
Servlets কি?
Servlets হল Java প্রোগ্রামের একটি বিশেষ অংশ যা সার্ভার-সাইডে চলে এবং ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এটি Java EE (Jakarta EE) এর একটি অংশ এবং HTTP প্রোটোকলের মাধ্যমে ক্লায়েন্ট-সার্ভার কমিউনিকেশন পরিচালনা করতে ব্যবহৃত হয়।
WebSocket কী?
WebSocket হল একটি প্রোটোকল যা পূর্ণ-ডুপ্লেক্স যোগাযোগ সক্ষম করে, যেখানে ক্লায়েন্ট এবং সার্ভার উভয়ই একটি ওপেন সংযোগের মাধ্যমে ডেটা পাঠাতে এবং গ্রহণ করতে পারে। এটি অনেক কম লেটেন্সি এবং ইন্টার্যাকটিভ অ্যাপ্লিকেশনের জন্য উপযুক্ত।
Servlets এবং WebSocket একত্রে ব্যবহার করা সম্ভব, বিশেষ করে রিয়েল-টাইম অ্যাপ্লিকেশন (যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ ড্যাশবোর্ড, বা গেমিং সিস্টেম) তৈরিতে।
উদাহরণ: WebSocket Integration সহ Servlet
1. প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করা (Maven Pom.xml)
<dependencies>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
2. WebSocket এন্ডপয়েন্ট তৈরি করা
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.OnClose;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket")
public class WebSocketEndpoint {
@OnOpen
public void onOpen(Session session) {
System.out.println("Connection opened: " + session.getId());
}
@OnMessage
public String onMessage(String message, Session session) {
System.out.println("Message received from " + session.getId() + ": " + message);
return "Server echo: " + message;
}
@OnClose
public void onClose(Session session) {
System.out.println("Connection closed: " + session.getId());
}
}
3. Servlet তৈরি করা
Servlet সাধারণত WebSocket URL কে সরবরাহ করার জন্য ব্যবহৃত হয়।
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/websocket-test")
public class WebSocketTestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("WebSocket is running. Connect at ws://localhost:8080/websocket");
}
}
4. ডেপ্লয়মেন্ট Descriptor (web.xml)
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="3.0">
<servlet>
<servlet-name>WebSocketTestServlet</servlet-name>
<servlet-class>com.example.WebSocketTestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WebSocketTestServlet</servlet-name>
<url-pattern>/websocket-test</url-pattern>
</servlet-mapping>
</web-app>
ক্লায়েন্ট সাইড WebSocket ব্যবহার করা (JavaScript)
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Example</title>
</head>
<body>
<h1>WebSocket Example</h1>
<script>
const socket = new WebSocket("ws://localhost:8080/websocket");
socket.onopen = () => {
console.log("Connected to server");
socket.send("Hello Server!");
};
socket.onmessage = (event) => {
console.log("Message from server:", event.data);
};
socket.onclose = () => {
console.log("Connection closed");
};
</script>
</body>
</html>
প্রজেক্ট চালানোর ধাপ
- Maven ব্যবহার করে ডিপেন্ডেন্সি ইন্সটল করুন।
- একটি Servlet container (যেমন Tomcat) ব্যবহার করে প্রকল্পটি চালান।
- ব্রাউজারে
http://localhost:8080/websocket-testURL এ যান এবং WebSocket কনেকশন পরীক্ষা করুন।
ফলাফল
- ক্লায়েন্ট থেকে "Hello Server!" পাঠানো হবে।
- সার্ভার সেই মেসেজ ইকো করবে: "Server echo: Hello Server!"।
এই উদাহরণটি WebSocket এবং Servlet এর সমন্বয়ে কীভাবে রিয়েল-টাইম যোগাযোগ তৈরি করা যায় তা প্রদর্শন করে।
Read more