我使用socket.io实现了一个应用程序。一切都很好。 将其转换为渐进式网络应用程序需要SSL,因此我已经完成了这项工作,而且工作得很好。该应用程序将作为Web应用程序安装并运行。
我的问题是,当我重新开始处理新功能时,app服务器的本地安装会忽略我的安全客户端请求(在生产系统上,nginx会处理SSL)。
这些是客户端中的违规行:
const socket_url = 'https://' + url.hostname + ':' + port;
const socket = openSocket(socket_url, {query: 'clientId=' + clientId, secure: true});
我可以在生产与本地开发中有条件地编辑客户端中的相关行,但我希望有一个更优雅的解决方案。
答案 0 :(得分:1)
有关处理测试环境与生产环境问题的几点想法:
http://
而不是https://
,以便客户端自动使用所需的协议(https在生产和http测试中)。这可以通过模板引擎完成,也可以在提供相关脚本时通过搜索/替换手动完成。location.protocol
而不是硬代码https
,后者将自动使用加载网页的协议,然后可以是http或https。因此,如果网页是通过http加载的,那么socket.io将使用http。如果网页是通过https加载的,那么socket.io将使用https。