我有一个应用程序,它使用两个需要相互通信的服务器。一个是python服务器,它实现BaseHTTPRequestHandler的do\u方法。另一个是node js的开发服务器/生产服务器,它承载一个React js应用程序。你知道吗
node js应用程序使用POST请求从输入中获取消息,python服务器从POST请求中提取该消息,然后使用Boto3调用Amazon的Lex来获取响应。你知道吗
每当我运行node js development server(在本地主机:3000)和python服务器(在本地主机:3001),python服务器能够识别发出了POST请求,并继续执行并获得响应。但是,当我运行node js production server(在本地主机:5000)和python服务器(在本地主机:3001),节点js服务器无法与python服务器通信。为什么会这样?你知道吗
如果要在本地开发服务器和internet上的任何其他服务器之间通信,则需要通过隧道连接。默认情况下,路由器配置为拒绝所有传入流量,因此当节点实例尝试与dev服务器通信时,它不会通过防火墙。你知道吗
一个简单的解决方案是使用ngrok。安装后,打开一个新的终端窗口并运行:
其中
<PORT>
是3001,因为这是dev服务器正在侦听的端口。你知道吗这个答案是假设你实际上正在运行节点.js实例在生产服务器上,而不是在本地计算机上。如果不是这样的话,这可能不会解决你的问题。你知道吗
经过大量的研究,我觉得让两个本地应用程序在不同的端口上运行有点不切实际,或者说比应该的要复杂得多。你知道吗
因此,我将我的项目迁移到使用Django,而不是使用React JS,并将其与python集成。这样Django的后端就可以处理我发出的POST请求,并根据需要更新DOM。你知道吗
所有这些都是针对一个chatbot应用程序的,该应用程序假设接受一个用户的问题,调用Amazon的Lex来获取一个意图和实体,然后spaCy,一个ML框架,搜索我们的数据库来寻找答案。然后返回答案,然后更新DOM而不刷新页面。你知道吗
相关问题 更多 >
编程相关推荐