gRPC Unterstützung
- @grpc/grpc-js:
@grpc/grpc-js
bietet vollständige Unterstützung für gRPC, einschließlich aller Funktionen wie Streaming, Interceptor und benutzerdefinierte Metadaten. Es ist eine vollständige Implementierung, die alle Aspekte von gRPC abdeckt. - @improbable-eng/grpc-web:
@improbable-eng/grpc-web
bietet Unterstützung für gRPC-Web, einschließlich einfacher und Streaming-Anfragen. Es ist jedoch nicht so umfassend wie@grpc/grpc-js
, wenn es um die Unterstützung aller gRPC-Funktionen geht. - grpc-web:
grpc-web
bietet grundlegende Unterstützung für gRPC-Web-Anfragen, konzentriert sich jedoch hauptsächlich auf einfache Anfragen und Antworten. Es ist nicht für komplexe gRPC-Funktionen wie Streaming ausgelegt.
Streaming Unterstützung
- @grpc/grpc-js:
@grpc/grpc-js
unterstützt sowohl unidirektionales als auch bidirektionales Streaming, was es zu einer vielseitigen Wahl für Anwendungen macht, die Echtzeit-Datenübertragungen benötigen. - @improbable-eng/grpc-web:
@improbable-eng/grpc-web
unterstützt Streaming sowohl für Client- als auch für Server-seitige Anwendungen, was es zu einer guten Wahl für Anwendungen macht, die Echtzeit-Kommunikation erfordern. - grpc-web:
grpc-web
unterstützt kein echtes Streaming, sondern konzentriert sich auf einfache Anfragen und Antworten. Es ist nicht für Anwendungen geeignet, die Streaming-Funktionalität benötigen.
Interoperabilität
- @grpc/grpc-js:
@grpc/grpc-js
ist vollständig interoperabel mit anderen gRPC-Implementierungen, was es einfach macht, mit verschiedenen gRPC-Servern und -Clients zu arbeiten. - @improbable-eng/grpc-web:
@improbable-eng/grpc-web
bietet gute Interoperabilität mit gRPC-Servern, insbesondere solchen, die für die Arbeit mit Webanwendungen konfiguriert sind. - grpc-web:
grpc-web
ist eine standardisierte Implementierung, die eine hohe Interoperabilität mit gRPC-Servern gewährleistet, die für gRPC-Web konfiguriert sind.
Einfache Integration
- @grpc/grpc-js:
@grpc/grpc-js
erfordert eine umfassende Konfiguration und ist am besten für serverseitige Anwendungen geeignet. - @improbable-eng/grpc-web:
@improbable-eng/grpc-web
lässt sich leicht in Webanwendungen integrieren und bietet eine einfache API für die Arbeit mit gRPC-Web. - grpc-web:
grpc-web
bietet eine einfache und leichtgewichtige Lösung für die Integration von gRPC-Web in Webanwendungen.
Codebeispiel
- @grpc/grpc-js:
gRPC-Anfrage mit
@grpc/grpc-js
const grpc = require('@grpc/grpc-js'); const protoLoader = require('@grpc/proto-loader'); const packageDefinition = protoLoader.loadSync('path/to/protofile.proto'); const proto = grpc.loadPackageDefinition(packageDefinition); const client = new proto.ServiceName('localhost:50051', grpc.credentials.createInsecure()); client.methodName({ requestData: 'data' }, (error, response) => { if (error) { console.error('Error:', error); } else { console.log('Response:', response); } });
- @improbable-eng/grpc-web:
gRPC-Web-Anfrage mit
@improbable-eng/grpc-web
import { grpc } from '@improbable-eng/grpc-web'; import { ServiceName } from './generated/protofile_pb'; grpc.invoke(ServiceName.MethodName, { request: new ServiceName.RequestType({ requestData: 'data' }), host: 'http://localhost:50051', onMessage: (message) => { console.log('Message:', message); }, onEnd: (status, message) => { console.log('Status:', status); console.log('Final Message:', message); }, });
- grpc-web:
gRPC-Web-Anfrage mit
grpc-web
import { grpc } from '@improbable-eng/grpc-web'; import { ServiceName } from './generated/protofile_pb'; const client = new ServiceName('http://localhost:50051'); client.methodName({ requestData: 'data' }, {}, (error, response) => { if (error) { console.error('Error:', error); } else { console.log('Response:', response); } });