Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js GRPCAPI只在localhost中工作,在某处发布时不工作_Node.js_Azure_Grpc - Fatal编程技术网

Node.js GRPCAPI只在localhost中工作,在某处发布时不工作

Node.js GRPCAPI只在localhost中工作,在某处发布时不工作,node.js,azure,grpc,Node.js,Azure,Grpc,我正试图通过rest和gRPC做一个基准测试 我编写了restapi,它接收许多json对象并对其进行计数。因此,我在linux上发布了一个带有azure容器()的web应用程序,所有都运行良好。() 我编写了一个GRPCAPI(),在这个项目中,我在/bin文件夹中有一个server.js和一个client.js,在/protos文件夹中有一个.proto文件 这个GRPCAPI与RESTAPI做的事情相同,它接收许多json对象并对其进行计数 当我在端口8080300010上运行本地主机上的

我正试图通过rest和gRPC做一个基准测试

我编写了restapi,它接收许多json对象并对其进行计数。因此,我在linux上发布了一个带有azure容器()的
web应用程序,所有都运行良好。()

我编写了一个GRPCAPI(),在这个项目中,我在
/bin
文件夹中有一个
server.js
和一个
client.js
,在
/protos
文件夹中有一个
.proto
文件

这个GRPCAPI与RESTAPI做的事情相同,它接收许多json对象并对其进行计数

当我在端口8080300010上运行本地主机上的GRPCAPI时工作正常,我运行客户端,将json对象发送到gRPC方法,并返回行号

当我创建dockerfile()时,构建它,在端口X上运行grpc映像,并在我的本地计算机中运行容器,它也可以正常工作

当我试图在linux上的
Web app上发布此容器时(与发布的方式相同),我的客户端没有返回任何内容。它没有进入我的请求方法,我尝试用console.log(“test”)登录,不管请求是否有效

client.testMethod({ lines: JSON.parse(data) }, function(err, response) {
            if(err){
                console.log('ERRO: ', err);
            }else{
                console.log('Greeting:', response); 
            }
            console.log('response: ', response); //log regardless of whether the request works or not.
        });
    console.log("finish.");
我的客户机只是返回“finish”,因为它已经执行了gRPC请求

我认为这是端口之类的东西,所以我在Azure上创建了一个虚拟机,我打开了80到http请求,打开了8080到任何想要进入我虚拟机的东西。在这个虚拟机中,我安装了nodejs和我的gRPC项目,并在端口80上不使用docker运行它,因此我尝试在我的VM ip:port上执行我的gRPC客户端,它不太工作,所以我在这个虚拟机中发布了我的restapi,并且它工作了

因此,我尝试在没有docker的情况下将其发布到本地网络中,我在一台机器上运行我的gRPC API(与localhost:port一起工作),并尝试在另一台机器上运行我的客户端(我确信我使用的端口是打开的),同样的事情发生了,它不会进入我的请求方法,但当我使用resp API时,它会工作

我也试着用这个,但同样的事情发生了


我不知道这台gRPC服务器发生了什么情况,当我试图通过网络访问它时,为什么它不工作?

您是否尝试过将
npm rebuild
添加到您的Dockerfile中?我很确定您正在复制节点模块,因为我没有看到
.dockrignore
。有了它们,
npm安装
可能什么也做不了,我认为gRPC依赖于预编译的二进制文件。除此之外,您是否有任何服务器日志或错误?我在虚拟机上发布了gRPC,当我访问本地主机(进入虚拟机)时,它可以工作,但当我从另一台机器(无论是否在同一网络中)访问时,它不工作。每次有人访问我的gRPC服务器时,我都会记录它,并且只有在我在LocalHost中运行服务器和客户端时才会记录它。当您说“打开了80个http请求”时,您的意思是您明确指定Azure应接受http通信量吗?因为gRPC不使用HTTP,所以它使用了HTTP2,这是一种不同的协议。您是否尝试过将
npm rebuild
添加到Dockerfile中?我很确定您正在复制节点模块,因为我没有看到
.dockrignore
。有了它们,
npm安装
可能什么也做不了,我认为gRPC依赖于预编译的二进制文件。除此之外,您是否有任何服务器日志或错误?我在虚拟机上发布了gRPC,当我访问本地主机(进入虚拟机)时,它可以工作,但当我从另一台机器(无论是否在同一网络中)访问时,它不工作。每次有人访问我的gRPC服务器时,我都会记录它,并且只有在我在LocalHost中运行服务器和客户端时才会记录它。当您说“打开了80个http请求”时,您的意思是您明确指定Azure应接受http通信量吗?因为gRPC不使用HTTP,所以它使用HTTP2,这是一种不同的协议。