Servlet এর মধ্যে WebSocket ব্যবহার করে রিয়েল-টাইম কমিউনিকেশন

Servlet এর মধ্যে WebSocket Integration - সার্ভলেটস (Servlets) - Java Technologies

320

সার্ভলেট (Servlet) হলো জাভা টেকনোলজির একটি গুরুত্বপূর্ণ অংশ, যা সার্ভার-সাইড প্রোগ্রামিংয়ের জন্য ব্যবহৃত হয়। এটি একটি জাভা-ক্লাস যা HTTP অনুরোধ এবং প্রতিক্রিয়া পরিচালনা করতে পারে। সার্ভলেট এবং ওয়েবসকেট (WebSocket) একত্রে ব্যবহার করে, আপনি রিয়েল-টাইম কমিউনিকেশনের জন্য কার্যকর সমাধান তৈরি করতে পারেন।

নিচে ওয়েবসকেট এবং সার্ভলেট ব্যবহারের মাধ্যমে রিয়েল-টাইম কমিউনিকেশনের একটি ধারণা দেওয়া হলো:


WebSocket কি?

  • WebSocket হলো একটি প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে দ্বিমুখী (bi-directional) এবং রিয়েল-টাইম কমিউনিকেশন সাপোর্ট করে।
  • HTTP এর মতো টেক্সট-ভিত্তিক নয়, এটি বাইনারি ডেটা ট্রান্সফারেরও সাপোর্ট দেয়।
  • এটি একটি একক TCP সংযোগ ব্যবহার করে কার্যক্রম পরিচালনা করে।

Java EE-তে WebSocket এবং Servlet ব্যবহার

Java EE বা Jakarta EE-তে WebSocket API বিল্ট-ইন রয়েছে, যা WebSocket এন্ডপয়েন্ট তৈরি করার জন্য সহজ করে তোলে।

নিচে একটি উদাহরণ দেখানো হলো যেখানে সার্ভলেট এবং ওয়েবসকেট একত্রে ব্যবহার করে রিয়েল-টাইম চ্যাট অ্যাপ্লিকেশন তৈরি করা হয়েছে:


Step 1: Maven ডিপেন্ডেন্সি

Maven প্রজেক্টে javax.websocket বা jakarta.websocket ডিপেন্ডেন্সি যোগ করুন:

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
</dependency>

Step 2: WebSocket ServerEndpoint তৈরি করা

একটি WebSocket এন্ডপয়েন্ট তৈরি করতে হবে যা ক্লায়েন্টের সাথে সংযোগ স্থাপন করবে।

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;

@ServerEndpoint("/chat")
public class ChatWebSocket {

    private static final CopyOnWriteArraySet<ChatWebSocket> connections = new CopyOnWriteArraySet<>();
    private Session session;

    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        connections.add(this);
        System.out.println("New connection: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message) {
        System.out.println("Message received: " + message);
        for (ChatWebSocket client : connections) {
            try {
                client.session.getBasicRemote().sendText(message);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @OnClose
    public void onClose() {
        connections.remove(this);
        System.out.println("Connection closed: " + session.getId());
    }

    @OnError
    public void onError(Throwable throwable) {
        throwable.printStackTrace();
    }
}

Step 3: Servlet তৈরি করা (অপশনাল)

সার্ভলেট ক্লায়েন্টকে WebSocket URL বা অন্যান্য স্ট্যাটিক/ডায়নামিক ডেটা পরিবেশন করতে পারে।

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/chat-servlet")
public class ChatServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        response.getWriter().write("<h1>Welcome to the Chat Application</h1>");
        response.getWriter().write("<p>Connect to the WebSocket endpoint at <code>ws://yourserver/chat</code></p>");
    }
}

Step 4: Client Side WebSocket Implementation

ক্লায়েন্ট সাইডে, JavaScript দিয়ে WebSocket সংযোগ করা হবে:

<!DOCTYPE html>
<html>
<head>
    <title>Chat Application</title>
</head>
<body>
    <h1>Chat Room</h1>
    <textarea id="chat" rows="10" cols="50" readonly></textarea><br>
    <input type="text" id="message" placeholder="Type a message">
    <button onclick="sendMessage()">Send</button>

    <script>
        const chat = document.getElementById("chat");
        const messageInput = document.getElementById("message");
        const socket = new WebSocket("ws://localhost:8080/chat");

        socket.onmessage = function (event) {
            chat.value += event.data + "\n";
        };

        function sendMessage() {
            const message = messageInput.value;
            socket.send(message);
            messageInput.value = "";
        }
    </script>
</body>
</html>

Step 5: ডিপ্লয় এবং টেস্ট

  1. এই প্রজেক্টটিকে একটি সার্ভলেট-সমর্থিত সার্ভারে (যেমন Tomcat, Jetty) ডিপ্লয় করুন।
  2. ব্রাউজারে অ্যাপ্লিকেশনটি চালু করুন এবং চ্যাট ফিচার পরীক্ষা করুন।

উপকারিতা

  • সার্ভলেট দিয়ে WebSocket এন্ডপয়েন্ট তৈরি করা সহজ।
  • দ্বিমুখী ডেটা ট্রান্সফারের মাধ্যমে রিয়েল-টাইম ফিচার ইমপ্লিমেন্ট করা যায়।
  • HTTP এর চেয়ে কম ওভারহেড থাকে, যা রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য উপযুক্ত।

এই উদাহরণটি আরও কাস্টমাইজ করে বাস্তব অ্যাপ্লিকেশন তৈরিতে ব্যবহার করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...