Tag: grpc

从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实现我所期待的和文档是如何实现这一点稀疏。

我可以从服务器发送一个自定义的错误消息到客户端GRPC?

我创build了一个简单的GRPC服务器和客户端。 我想要做的是在服务器中创build一个自定义错误,并将其传递给客户端。 我的代码如下所示: Server.js var error = require('error'); var PROTO_PATH = grpc.load(__dirname + '/proto/hello.proto'); var hello_proto = PROTO_PATH.hello; function sayHello(call, callback) { try { var jsErr = new Error('MY_ERROR'); jsErr.newStatus = 401; jsErr.newMessage = 'custom unAuthorized error'; console.log(Object.getOwnPropertyNames(jsErr)); console.log(jsErr); callback(jsErr); } catch(e) { callback(e); } } function sayHelloAgain(call, callback) { callback(null, {message: 'Hello Again ' […]