在python服务器和节点服务器之间通信
我有一个应用程序,它使用两台需要相互通信的服务器。一个是实现BaseHTTPRequestHandler的do_METHODs的python服务器。另一个是托管React JS应用程序的node js的开发服务器/生产服务器。
node js应用程序使用POST请求从输入中获取消息,然后python服务器从该POST请求中提取该消息,然后使用Boto3调用Amazon的Lex以获取响应。
[无论何时运行node js开发服务器(在localhost:3000上)和python服务器(在localhost:3001上),python服务器都能够识别出已发出POST请求并继续进行并获得响应。但是,当我运行node js生产服务器(在localhost:5000上)和python服务器(在localhost:3001上)时,node js服务器无法与python服务器通信。为什么会这样?
回答如下:如果要在本地开发服务器和Internet上的任何其他服务器之间进行通信,则需要建立连接隧道。默认情况下,路由器配置为拒绝所有传入流量,因此,当您的节点实例尝试与开发服务器通信时,它不会通过防火墙。
一个简单的解决方案是使用ngrok。安装完毕后,打开一个新的终端窗口并运行:
ngrok http <PORT>
其中<PORT>
为3001,因为这是开发服务器正在侦听的端口。
此答案假设您实际上是在生产服务器上而不是在本地计算机上运行node.js实例。如果不是这种情况,那么这可能无法解决您的问题。
在python服务器和节点服务器之间通信
我有一个应用程序,它使用两台需要相互通信的服务器。一个是实现BaseHTTPRequestHandler的do_METHODs的python服务器。另一个是托管React JS应用程序的node js的开发服务器/生产服务器。
node js应用程序使用POST请求从输入中获取消息,然后python服务器从该POST请求中提取该消息,然后使用Boto3调用Amazon的Lex以获取响应。
[无论何时运行node js开发服务器(在localhost:3000上)和python服务器(在localhost:3001上),python服务器都能够识别出已发出POST请求并继续进行并获得响应。但是,当我运行node js生产服务器(在localhost:5000上)和python服务器(在localhost:3001上)时,node js服务器无法与python服务器通信。为什么会这样?
回答如下:如果要在本地开发服务器和Internet上的任何其他服务器之间进行通信,则需要建立连接隧道。默认情况下,路由器配置为拒绝所有传入流量,因此,当您的节点实例尝试与开发服务器通信时,它不会通过防火墙。
一个简单的解决方案是使用ngrok。安装完毕后,打开一个新的终端窗口并运行:
ngrok http <PORT>
其中<PORT>
为3001,因为这是开发服务器正在侦听的端口。
此答案假设您实际上是在生产服务器上而不是在本地计算机上运行node.js实例。如果不是这种情况,那么这可能无法解决您的问题。