Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

नेक्स्ट.जेएस में रियल-टाइम सुविधाओं को सहजता से एकीकृत करें

Next.js में रीयलटाइम सुविधाएं जोड़ना बेकार है 💀

<पी> मेरा मतलब इन चीज़ों से है:

  • वर्सेल एआई एसडीके के लिए रीयलटाइम स्ट्रीम
  • लाइव डैशबोर्ड
  • लाइव सूचनाएं और अपडेट
  • लाइव कर्सर या 'ऑनलाइन कौन है' संकेतक
  • फ़ाइल अपलोड या लंबे समय से चल रहे कार्यों के लिए प्रगति ट्रैकिंग
<पी> और यह निश्चित रूप से SaaS की कमी के कारण नहीं है जिसका उपयोग आप केवल इसी उद्देश्य के लिए कर सकते हैं। मौजूदा सेवाएँ हैं:

  • महंगा और अस्पष्ट मूल्य निर्धारण (एबली)
  • खराब डेवलपर अनुभव (पुशर) के साथ टाइप-सुरक्षित नहीं
  • बहुत बढ़िया (उत्तल, सुपाबेस), लेकिन अपने पूरे स्टैक को स्थानांतरित किए बिना रीयलटाइम जोड़ना कठिन है

अपस्टैश रीयलटाइम का लक्ष्य

<पी> मैं एक रीयलटाइम सेवा चाहता था जो

थी
  • फ्रंट और बैकएंड में 100% टाइप-सुरक्षित
  • वर्सेल और अन्य सर्वर रहित प्लेटफ़ॉर्म पर परिनियोजन योग्य
  • कीमत इवेंट के आधार पर है, कनेक्शन समय के आधार पर नहीं
  • किसी भी मौजूदा डेटाबेस (नियॉन, प्लैनेटस्केल, सब कुछ) के साथ प्रयोग करने योग्य
<पी> तो हम अपस्टैश रीयलटाइम को वैसा ही बना रहे हैं। किसी भी Next.js ऐप में रीयलटाइम सुविधाएं जोड़ने का सबसे आसान तरीका। सेटअप में 2 मिनट लगते हैं और इसे वर्सेल, क्लाउडफ़ेयर या अन्य पर तैनात किया जा सकता है।

मुझे ऐसा करने के सभी मौजूदा तरीकों से नफरत है 🤡

<पी> मुझे रीयलटाइम का विचार कंटेंटपोर्ट नामक एक ओपन-सोर्स SaaS के निर्माण से मिला। जब आप कंटेंटपोर्ट के माध्यम से एक ट्वीट पोस्ट करते हैं, तो हम पोस्टिंग लॉजिक को अपस्टैश वर्कफ़्लो में चलाते हैं जो विफलता पर स्वचालित रूप से पुनः प्रयास किया जाता है।

<पी> इस तरह, भले ही ट्विटर एपीआई डाउन हो, हमारे एआई प्रदाता के पास आउटेज है, या कुछ और गलत होने पर, हम पोस्ट करने वाले व्यक्ति को अत्यधिक उच्च विश्वसनीयता की गारंटी दे सकते हैं।

<पी> लेकिन क्योंकि यह तर्क पृष्ठभूमि कार्य में चलता है, क्लाइंट और पोस्टिंग तर्क के बीच कोई संबंध नहीं है। दूसरे शब्दों में, क्लाइंट को वर्तमान स्थिति (जैसे 'प्रसंस्करण', 'पोस्टिंग', या 'सफलता') के बारे में बताने का कोई तरीका नहीं है।

<पी> नेक्स्ट.जेएस में रियल-टाइम सुविधाओं को सहजता से एकीकृत करें

<पी> क्लाइंट को वास्तविक समय में स्थिति अपडेट भेजने के लिए, मुझे किसी प्रकार के संदेश ब्रोकर की आवश्यकता थी।

<पी> मैं पुशर से बहुत नाखुश था और हमारे मौजूदा नियॉन पोस्टग्रेज़ डेटाबेस को केवल रीयलटाइम सुविधाओं के लिए कॉन्वेक्स पर स्थानांतरित नहीं करना चाहता था। और पता चला, हमारे सबसे परिपक्व उत्पाद, अपस्टैश रेडिस में वह सब कुछ है जो मुझे इस काम को करने के लिए चाहिए था:पब/सब और रेडिस स्ट्रीम।

त्वरित उदाहरण

<पी> आइए एक सरल उदाहरण बनाएं जो सर्वर कार्रवाई से क्लाइंट को रीयलटाइम अपडेट भेजता है।

<पी> सबसे पहले, हम पैकेज स्थापित करते हैं:

npm install @upstash/realtime
<पी> फिर हम zod:

का उपयोग करके घटनाओं को परिभाषित करते हैं lib/realtime.ts
import { InferRealtimeEvents, Realtime } from "@upstash/realtime";
import z from "zod/v4";
import { redis } from "./redis";
 
const schema = {
 notification: z.object({
 message: z.string(),
 }),
};
 
const realtime = new Realtime({ schema, redis });
export type RealtimeEvents = InferRealtimeEvents<typeof realtime>;
<पी> किसी भी रूट हैंडलर में ईवेंट भेजें:

रूट.ts
import { realtime } from "@/lib/realtime";
 
await realtime.emit("notification", { message: "Hello world!" });
<पी> अपने रिएक्ट घटक में घटनाओं की सदस्यता लें:

पेज.tsx
import { RealtimeEvents } from "@/lib/realtime";
import { useRealtime } from "@upstash/realtime/client";
 
useRealtime<RealtimeEvents>({
 event: "notification",
 onData: ({ message }) => {
 console.log(message);
 },
});
<पी> बस इतना ही! अब हमारे पास सर्वर से क्लाइंट तक पूरी तरह से टाइप-सुरक्षित रीयलटाइम अपडेट हैं।

अस्वीकरण

<पी> अपस्टैश रीयलटाइम का मतलब 1:1 पुशर प्रतिस्थापन नहीं है क्योंकि हम HTTP का उपयोग करते हैं न कि पुशर जैसे सॉकेट का।

<पी> इसलिए जबकि अत्यधिक उच्च आवृत्ति अपडेट (>15-20 प्रति सेकंड) के लिए HTTP संभवतः अधिक विश्वसनीय है, मैं उनके सॉकेट कनेक्शन के कारण पुशर की अनुशंसा करता हूं।

<पी> लेकिन किसी भी अन्य चीज़ के लिए, जैसे वर्सेल के एआई एसडीके से उच्च-आवृत्ति एआई चंक अपडेट, लाइव डैशबोर्ड या लाइव चैट संदेश, हम अपस्टैश रीयलटाइम का निर्माण कर रहे हैं। <पी> आपको इसे आज़माना चाहिए, इसे शुरू करना बहुत आसान है!

<पी> पढ़ने के लिए धन्यवाद! 🙌 कोई प्रश्न या प्रतिक्रिया है? सीधे मुझसे संपर्क करें @joshtriedcoding.


  1. C++ में बाइनरी ट्री में सभी राइट नोड्स में से अधिकतम खोजें C++ में बाइनरी ट्री में सभी राइट नोड्स में से अधिकतम खोजें

    इस समस्या में हमें एक Binary Tree दिया जाता है। हमारा काम बाइनरी ट्री में सभी सही नोड्स के बीच अधिकतम खोजना है। समस्या का विवरण: यहां, हमें बाइनरी ट्री के सभी राइट चाइल्ड नोड्स के बीच अधिकतम मान खोजने की आवश्यकता है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: आउटपुट: 9 स्पष्टीक

  1. HTML DOM querySelectorAll () विधि HTML DOM querySelectorAll () विधि

    HTML DOM querySelectorAll() विधि उन सभी तत्वों को लौटाती है जो HTML दस्तावेज़ में इसके पैरामीटर में निर्दिष्ट विशिष्ट CSS चयनकर्ता से मेल खाते हैं। सिंटैक्स निम्नलिखित वाक्य रचना है - document.querySelectorAll(“CSS Selector”); उदाहरण आइए हम querySelectorAll() विधि का एक उदाहरण देखें -

  1. कस्टम शैल फ़ंक्शंस और पुस्तकालयों को कैसे लिखें और उपयोग करें कस्टम शैल फ़ंक्शंस और पुस्तकालयों को कैसे लिखें और उपयोग करें

    Linux में, शेल स्क्रिप्ट कई अलग-अलग तरीकों से हमारी मदद करती हैं, जिसमें कुछ सिस्टम व्यवस्थापन कार्यों को निष्पादित करना या स्वचालित करना, सरल कमांड लाइन टूल बनाना और बहुत कुछ शामिल हैं। इस गाइड में, हम नए लिनक्स उपयोगकर्ताओं को दिखाएंगे कि कस्टम शेल स्क्रिप्ट को मज़बूती से कहाँ संग्रहीत किया जाए,