JavaScript (Node.js) के लिए gRPC: लाइब्रेरीज़ और कोड उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

JavaScript (Node.js) के लिए gRPC: लाइब्रेरीज़ और उदाहरण



gRPC एक उच्च-प्रदर्शन वाला रिमोट प्रोसीजर कॉल (RPC) फ्रेमवर्क है, जिसे Google द्वारा विकसित किया गया है। यह डेटा सीरियलाइज़ेशन के लिए Protocol Buffers (protobuf) और ट्रांसपोर्ट के लिए HTTP/2 का उपयोग करता है। Node.js इकोसिस्टम में, gRPC द्वि-दिशात्मक स्ट्रीमिंग के समर्थन के साथ तेज़ और विश्वसनीय माइक्रोसर्विसेज़ बनाने की अनुमति देता है। इस लेख में, हम मुख्य लाइब्रेरीज़, इंस्टॉलेशन को समझेंगे और सर्वर और क्लाइंट का एक कार्यशील उदाहरण लिखेंगे।



Node.js में gRPC के लिए मुख्य लाइब्रेरीज़



Node.js वातावरण में gRPC के साथ काम करने के लिए कई प्रमुख पैकेज उपलब्ध हैं:



  • @grpc/grpc-js — JavaScript में gRPC का शुद्ध कार्यान्वयन। इसे किसी मूल (C++) निर्भरता की आवश्यकता नहीं है, जिससे इंस्टॉलेशन सरल हो जाता है। अधिकांश आधुनिक प्रोजेक्ट्स के लिए अनुशंसित।
  • @grpc/proto-loader — .proto फ़ाइलों का लोडर। @grpc/grpc-js के साथ उपयोग के लिए protobuf परिभाषाओं को JavaScript ऑब्जेक्ट्स में बदलता है।
  • protobufjs — protobuf के साथ काम करने के लिए एक वैकल्पिक लाइब्रेरी। यह स्थिर और गतिशील दोनों प्रकार की कोड जनरेशन का समर्थन करता है।
  • grpc-tools — .proto फ़ाइलों से JavaScript कोड उत्पन्न करने के लिए CLI टूल (गतिशील लोडिंग का विकल्प)।


इस गाइड में, हम @grpc/grpc-js और @grpc/proto-loader के संयोजन का उपयोग करेंगे — यह एक आधुनिक और स्थिर दृष्टिकोण है।



निर्भरताएँ स्थापित करना



एक नया प्रोजेक्ट बनाएँ और आवश्यक पैकेज स्थापित करें:



mkdir grpc-node-examplecd grpc-node-examplenpm init -ynpm install @grpc/grpc-js @grpc/proto-loader


.proto फ़ाइल के माध्यम से सेवा परिभाषित करना



सेवा और संदेशों के विवरण के साथ hello.proto फ़ाइल बनाएँ:



syntax = "proto3";

service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} rpc SayHelloStream (HelloRequest) returns (stream HelloReply) {}}

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


यहाँ हमने दो विधियाँ परिभाषित की हैं: सरल यूनरी SayHello और सर्वर स्ट्रीमिंग SayHelloStream।



Node.js पर gRPC सर्वर का कार्यान्वयन



server.js फ़ाइल बनाएँ:



const grpc = require('@grpc/grpc-js');const protoLoader = require('@grpc/proto-loader');

const PROTO_PATH = './hello.proto';

// प्रोटो-फ़ाइल की परिभाषा लोड करेंconst packageDefinition = protoLoader.loadSync(PROTO_PATH, { keepCase: true, longs: String, enums: String, defaults: true, oneofs: true});

const helloProto = grpc.loadPackageDefinition(packageDefinition).helloworld;

// सेवा विधियों का कार्यान्वयनfunction sayHello(call, callback) { const name = call.request.name; console.log(`अनुरोध प्राप्त हुआ: ${name}`); callback(null, { message: `नमस्ते, ${name}!` });}

function sayHelloStream(call) { const name = call.request.name; console.log(`स्ट्रीमिंग के लिए: ${name}`);

// कई उत्तर भेजें for (let i = 0; i < 5; i++) { call.write({ message: `नमस्ते ${name} - संदेश ${i + 1}` }); } call.end();}

// सर्वर प्रारंभ करेंfunction main() { const server = new grpc.Server(); server.addService(helloProto.Greeter.service, { sayHello: sayHello, sayHelloStream: sayHelloStream });

server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => { console.log('gRPC सर्वर पोर्ट 50051 पर चल रहा है'); server.start(); });}

main();


Node.js पर gRPC क्लाइंट का कार्यान्वयन



client.js फ़ाइल बनाएँ:



const grpc = require('@grpc/grpc-js');const protoLoader = require('@grpc/proto-loader');

const PROTO_PATH = './hello.proto';

const packageDefini

अनुशंसाएँ