gRPC API只能在localhost中工作,当我在某个地方发布它时不起作用

时间:2017-10-26 16:57:52

标签: node.js azure grpc

我试图通过休息与gRPC制作基准。

我编写了我的rest api,它接收了许多json对象并对其进行了计数。所以我将其作为web app on linux与天蓝色容器(I published it using this way, but my image is public)发布,所有都可以正常工作。 (docker image

我编写了一个gRPC API(code here),在这个项目中,我在server.js文件夹中有一个client.js和一个/bin,还有一个.proto档案/protos

这个gRPC API与REST api做的事情相同,它接收许多json对象并对其进行计数。

当我在localhost上的端口80,8080,3000,3010上运行gRPC API ... 它工作正常,我运行我的客户端,将json对象发送到gRPC方法并返回行号。

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

当我尝试在Web app on linux发布此容器时(与publish a rest api相同),我的客户端什么都不返回。它没有进入我的请求方法,我试图用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.");

我的客户刚刚返回"完成"因为它已经执行了gRPC请求。

我认为它类似于端口或其他东西,所以我在Azure上创建了一个虚拟机,我打开了80个http请求,8080打开了任何想进入的东西我的VM。在我的VM中我安装了nodejs和我的gRPC项目,并在端口80上没有docker的情况下运行它,所以我试图在我的VM ip:port上执行我的gRPC客户端,而它也没有工作,所以我在这个虚拟机中发布了我的 rest api ,并且有效

所以我尝试将它发布到没有docker的本地网络中,我在一台机器上运行我的gRPC API(与localhost:port一起使用)并尝试在其他机器上运行我的客户端(我确定我使用的端口)是开放的),同样的事情发生了,它没有进入我的请求方法,但是当我使用resp api时,它可以工作。

我也尝试使用ngrok,但同样的事情发生了。

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

0 个答案:

没有答案