Articles of grpc

NodeJS gRPC:“预期但未提供的方法处理程序”

我翻阅了文档,还没有find解决scheme。 该应用程序松散地基于来自其文档的“sayHello”示例 ,但是每次代码运行Method handler for /eventComm.DatabaseRPC/InsertSingleDocument expected but not provided的警告Method handler for /eventComm.DatabaseRPC/InsertSingleDocument expected but not provided返回。 我的原始文件: service DatabaseRPC { rpc InsertSingleDocument (Doc) returns (Doc) {} } message Doc { required string name = 1; required int32 id = 2; } 我的gRPC服务器: function InsertSingleDocument (call, callback) { callback(null, { name: 'Hello ', id: 1 […]

用无头服务在kubernetes上进行gRPC(nodejs)循环

我有一个3 nodejs grpc服务器pod和一个grpc服务的无头kubernetes服务(返回所有3个pod ips与dnstesting与geod主机从pod内)。 然而,所有grpc客户端请求总是在一台服务器上结束。 根据https://stackoverflow.com/a/39756233/2952128 (最后一段),每轮调用应该可能2017年第一季度。我正在使用grpc 1.1.2 我尝试为new Client(address, credentials, options)提供{"loadBalancingPolicy": "round-robin"} new Client(address, credentials, options)并使用dns:///service:port作为地址。 如果我正确地理解了文档/代码,这应该传递到C核,并使用新实现的循环信道创build。 ( https://github.com/grpc/grpc/blob/master/doc/service_config.md ) 这是如何循环负载平衡器应该现在工作? 它已经发布与GRPC 1.1.2?

Nodejs应用程序如何调用grpc服务器

我试图弄清楚如何从我的nodejs应用程序中的javascript函数调用grpc服务器,并更新我的页面…我不知道如何pipe理它。 这是原始文件: syntax = "proto3"; package helloworld; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; } 这是服务器: var PROTO_PATH = __dirname + '/helloworld.proto'; var grpc = require('grpc'); var hello_proto = grpc.load(PROTO_PATH).helloworld; function sayHello(call, callback) { callback(null, {message: 'Hello […]

从nodejs grpc客户端连接到在tls中启用的grpc服务器

我有一个grpc服务器写在走在tls模式下运行。 如果我想从nodejs客户端连接到服务器而不validation服务器的证书链和主机名。 我如何做到这一点? (这是通过在golang中的tlsconfiguration中将InsecureSkipVerify标志设置为true来完成的) 连接grpc服务器的默认方式(tls中没有启用)是使用grpc.credentials.createInsecure()。 但是当我启用tls模式的服务器,并使用grpc.credentials.createSsl()它给了我下面的错误日志: E1207 20:47:12.228100000 123145571782656 handshake.c:128]安全握手失败:{“created”:“@ 1481123832.228090000”,“description”:“Handshake failed”,“file”:“../ src / core / lib /安全/运输/ handshake.c”, “file_line”:264, “tsi_code”:10 “tsi_error”: “TSI_PROTOCOL_FAILURE”} 如何摆脱这个错误,并连接到tls启用grpc服务器,而无需在nodejs客户端中提供任何证书?

尝试在Linux ARM处理器上使用grpc运行节点应用程序

在平台上安装grpc(npm install grpc)时,会尝试从https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.0.1下拉预编译的二进制文件(grpc_node.node) 。 我无法findLinux ARM处理器的版本。 是ARM处理器的一个存在吗? 如果确实如此,请将链接指向下载。 如果没有,请你自己提供指导。 注意:带有ARM处理器的机器在隔离networking上,所以我不能运行“npm install grpc”来弄清楚。

即使使用负载平衡器地址,gRPC客户端也不使用grpc-lb

我正在尝试使用haproxy负载均衡器和基于TCP的负载均衡,将rpc调用从单个node.js客户端负载平衡到多个node.js后端。 我在创buildgrpc客户端时提供了这个负载平衡器的dns-name:port,根据https://github.com/grpc/grpc/blob/master/doc/load-balancing.md ,应该将其视为负载平衡器地址和一个子通道应该打开每个lb的后端服务器。 但是我可以看到,打开的唯一通道是负载平衡器,所有的rpc只发送到一台服务器,直到tcp idle connection-timeout命中,并且新的服务器build立一个新的tcp连接。 只是想问grpc如何检测客户端是否与负载平衡器或服务器连接? 有什么办法可以告诉客户端,它连接的地址是一个负载平衡器地址,因此它应该使用grpc-lb策略而不是先select?

react native上的gRPC

我已经在iOS上工作了一段时间了,我正在使用React Native进行实验。 我遇到的一个障碍是如何将我的gRPC端点合并到React Native中,或者从根本上是否可行。 我试图简单地添加从gRPC生成的node.js代码无济于事。 我得到的最后一个答案是去年在这里 。

在节点js中设置grpc函数的超时

尝试创buildgrpc连接的超时,如果服务器grpc实现没有指定callback函数,但是看起来无论选项(new Date()。getSeconds()+ 5)中指定了什么,客户端不会终止连接 function hello (call, callback) { console.log(call.request.message) } server.addService(client.Hello.service, {hello: hello}); server.bind('localhost:50051', grpc.ServerCredentials.createInsecure()); server.start(); grpcClient = new client.Hello('localhost:50051', grpc.credentials.createInsecure(),{deadline: new Date().getSeconds()+5}); // grpcClient.hello({message: "abc"}, function(err, response) { console.log(response) // doesn't reach here because function hello doesn't callback })

在电子中使用gRPC

我试图要求在一个电子应用grpc,但我得到以下错误: Error: dlopen(/srv/node_modules/grpc/src/node/extension_binary/grpc_node.node, 1): Symbol not found: _GENERAL_NAME_free Referenced from: /srv/node_modules/grpc/src/node/extension_binary/grpc_node.node Expected in: flat namespace 我使用的是OSX Sierra 10.12.1,节点6.8.1,电子1.4.4和grpc 1.0.1-pre1。 我升级了xcode命令行工具,并且安装了openssl –force。 我build立了二进制文件: LDFLAGS=-L/usr/local/opt/openssl/lib CPPFLAGS=-I/usr/local/opt/openssl/include ./node_modules/.bin/electron-rebuild 并手动使用: LDFLAGS=-L/usr/local/opt/openssl/lib CPPFLAGS=-I/usr/local/opt/openssl/include HOME=~/.electron-gyp node-pre-gyp rebuild –target=1.4.4 –arch=x64 –dist-url=https://atom.io/download/atom-shell 但是当我运行应用程序,我仍然得到错误。

如何添加元数据到nodejs grpc调用

我想知道如何添加元数据到nodejs grpc函数调用。 使用客户端时,我可以使用通道凭证 var client = new proto.Document('some.address:8000', grpc.credentials.createInsecure() ) 当使用client.Send(doc, callback)时候会发送哪些client.Send(doc, callback) ,但是go grpc服务器在调用元数据中查找我必须设置的标识信息。 我尝试使用grpc.credentials.combineChannelCredentials与不安全的连接和一个grpc.Metadata实例,但我找不到正确的方法来做到这一点。 我碰到的错误是TypeError: compose's first argument must be a CallCredentials object 。 我试图遵循它,但它进入C代码,这使我失去了,我不能看到什么JavaScripttypes我必须给comebineChannelCredentials实现我所期待的和文档是如何实现这一点稀疏。