Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ · पाठ

STOMP के साथ निजी संदेश-विनिमय

STOMP के उपयोगकर्ता-विशिष्ट गंतव्यों का उपयोग करके उपयोगकर्ताओं के बीच सीधे, आमने-सामने निजी संदेश-विनिमय लागू करना सीखिए।

पाठ 3, कुल 4 में से11 चरण

STOMP के साथ निजी संदेश-विनिमय, CoddyKit पर Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

निजी चैट की मूल बातें

स्वागत है! इस lesson में हम WebSockets और STOMP का उपयोग करके अपने चैट application में निजी संदेश भेजने की सुविधा बनाना सीखेंगे।

सार्वजनिक चैट रूम के विपरीत, जहाँ सभी को संदेश प्राप्त होते हैं, निजी संदेश (जैसे direct messages या DMs) विशेष रूप से एक उपयोगकर्ता से दूसरे उपयोगकर्ता को भेजे जाते हैं। इसके लिए संदेशों को सीधे किसी व्यक्ति के विशिष्ट session तक पहुँचाने की व्यवस्था आवश्यक होती है।

STOMP उपयोगकर्ता destinations

STOMP एक विशेष destination prefix प्रदान करता है: /user। जब कोई client /user/queue/private-messages जैसे destination को subscribe करता है, तो STOMP broker (और Spring) इसे उस प्रमाणित उपयोगकर्ता के लिए स्वतः एक विशिष्ट, session-विशिष्ट queue में बदल देता है।

  • /user prefix: उपयोगकर्ता-विशिष्ट destination दर्शाता है।
  • प्रत्येक उपयोगकर्ता के लिए विशिष्ट: हर उपयोगकर्ता को निजी संदेशों के लिए अपना अलग 'inbox' मिलता है।
  • रूटिंग का अमूर्तीकरण: आपको वास्तविक session ID जानने की आवश्यकता नहीं होती।

Spring और उपयोगकर्ता routes

Spring का WebSocket और STOMP integration /user prefix के साथ मिलकर काम करता है। जब आप अपने message broker को configure करते हैं, तो Spring को user destinations enable करने के लिए कहते हैं:

config.setUserDestinationPrefix("/user");

यह setting सुनिश्चित करती है कि /user/{username}/queue/{destination} को Spring द्वारा {username} से जुड़े WebSocket session(s) तक सही ढंग से route किया जाए।

Server-side: निजी संदेश भेजना

Server पर Spring SimpMessagingTemplate उपलब्ध कराता है। यह शक्तिशाली tool आपको user-specific destinations सहित विभिन्न STOMP destinations पर संदेश भेजने देता है।

निजी संदेश भेजने की मुख्य method convertAndSendToUser() है। इसमें तीन मुख्य arguments होते हैं:

  1. username: प्राप्तकर्ता उपयोगकर्ता का identifier।
  2. destination: उस उपयोगकर्ता के private space के भीतर की विशिष्ट queue (जैसे, /queue/private-messages)।
  3. payload: संदेश की वास्तविक सामग्री।

Server से निजी संदेश भेजने का प्रदर्शन

इस सरल Spring Boot application को चलाकर देखें। यह SimpMessagingTemplate का उपयोग करके निजी संदेश भेजने वाली controller method दिखाता है। याद रखें, वास्तविक application में प्राप्तकर्ता का username client के message payload या किसी अन्य context से प्राप्त होगा।

package com.coddykit;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.stereotype.Controller;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import java.security.Principal;

@SpringBootApplication
@EnableWebSocketMessageBroker
public class PrivateChatApp {

    public static void main(String[] args) {
        SpringApplication.run(PrivateChatApp.class, args);
    }

    @Configuration
    static class WsConfig implements WebSocketMessageBrokerConfigurer {
        @Override
        public void configureMessageBroker(MessageBrokerRegistry cfg) {
            cfg.enableSimpleBroker("/topic", "/queue");
            cfg.setApplicationDestinationPrefixes("/app");
            cfg.setUserDestinationPrefix("/user"); // Crucial for private messages
        }
        @Override
        public void registerStompEndpoints(StompEndpointRegistry reg) {
            reg.addEndpoint("/ws").withSockJS();
        }
    }

    @Controller
    static class PrivateMsgController {
        private final SimpMessagingTemplate template;

        public PrivateMsgController(SimpMessagingTemplate t) {
            this.template = t;
        }

        @MessageMapping("/sendPrivate") // Client sends to /app/sendPrivate
        public void sendPrivateMsg(String msg, Principal p) {
            String sender = p != null ? p.getName() : "anon";
            String recipient = "targetUser"; // In real app, from msg payload

            // Send to a specific user's private queue
            template.convertAndSendToUser(
                recipient,
                "/queue/private-messages", // Client subscribes here
                "From " + sender + ": " + msg
            );
            System.out.println("Sent private msg to " + recipient + " from " + sender);
        }
    }
}

Client का निजी inbox

Client side पर, संदेश प्राप्त करने के लिए उपयोगकर्ता को अपने निजी destination को subscribe करना होता है। यदि किसी उपयोगकर्ता का principal name 'alice' है, तो वह इस पर subscribe करेगा:

/user/queue/private-messages

Spring आंतरिक रूप से इसे स्वतः /queue/private-messages-user{sessionId} पर map करता है, जिससे यह सुनिश्चित होता है कि 'alice' को भेजे गए संदेश केवल उसी को प्राप्त हों।

Client-side subscription

STOMP client library (जैसे Stomp.js) का उपयोग करने पर subscription प्रक्रिया सरल है:

stompClient.subscribe('/user/queue/private-messages', function(message) {
    // Handle the private message
    console.log("Received private message: " + message.body);
});

इससे यह सुनिश्चित होता है कि वर्तमान में प्रमाणित उपयोगकर्ता के /queue/private-messages destination पर भेजा गया कोई भी संदेश इस client को प्राप्त होगा।

निजी संदेश मॉडल

मजबूत निजी चैट के लिए, आपके message payload में संरचित data होना चाहिए। एक सामान्य निजी संदेश model में ये शामिल हो सकते हैं:

  • senderId: संदेश भेजने वाले उपयोगकर्ता का ID।
  • recipientId: संदेश प्राप्त करने वाले उपयोगकर्ता का ID।
  • content: संदेश का वास्तविक text या data।
  • timestamp: संदेश भेजे जाने का समय।

इससे clients संदेशों को सही ढंग से दिखा सकते हैं और यह पहचान सकते हैं कि किसने किसे क्या भेजा।

उपयोगकर्ता की पहचान और STOMP

Spring को कैसे पता चलता है कि /user destination के लिए उपयोगकर्ता 'alice' कौन है? यह Principal object पर निर्भर करता है, जिसे आमतौर पर Spring Security या किसी अन्य authentication mechanism द्वारा भरा जाता है।

जब WebSocket connection स्थापित होता है, तो Spring उस session के साथ एक Principal संबद्ध करता है। convertAndSendToUser() method target user की पहचान करने के लिए इस Principal के getName() का उपयोग करती है।

निजी संदेश प्रश्नोत्तरी

आपने सीख लिया है कि Spring और STOMP निजी संदेशों को कैसे संभालते हैं। आइए, उन्हें भेजने की आपकी समझ को परखें।

निजी चैट का सारांश

बहुत अच्छा! आपने STOMP और Spring के साथ निजी संदेश भेजने की मूल बातें सीख ली हैं।

  • /user destination prefix संदेशों को अलग-अलग उपयोगकर्ताओं तक पहुँचाता है।
  • Spring का SimpMessagingTemplate.convertAndSendToUser() विशिष्ट user destinations पर संदेश भेजता है।
  • अपने DMs प्राप्त करने के लिए clients /user/queue/{your-private-destination} को subscribe करते हैं।
  • सही routing के लिए उपयोगकर्ता की पहचान (Principal) अत्यंत महत्वपूर्ण है।

यह ज्ञान आपको अपने applications में उन्नत और व्यक्तिगत real-time interactions बनाने में सक्षम बनाता है!

शुरुआत निःशुल्क

एआई शिक्षक के साथ Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “STOMP के साथ निजी संदेश-विनिमय” पाठ निःशुल्क है?

हाँ—“STOMP के साथ निजी संदेश-विनिमय” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“STOMP के साथ निजी संदेश-विनिमय” में मैं क्या सीखूँगा?

STOMP के उपयोगकर्ता-विशिष्ट गंतव्यों का उपयोग करके उपयोगकर्ताओं के बीच सीधे, आमने-सामने निजी संदेश-विनिमय लागू करना सीखिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“STOMP के साथ निजी संदेश-विनिमय” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. चैट संदेश मॉडल का अभिकल्पन
  2. सार्वजनिक चैट कक्ष लागू करना
  3. STOMP के साथ निजी संदेश-विनिमय
  4. टाइपिंग संकेतक और ऑनलाइन उपस्थिति
← Spring के साथ WebSockets और वास्तविक समय की प्रणालियाँ पर वापस जाएँ