我是Web开发和服务器-客户端交互领域的初学者,因此我想对这个话题进行澄清,这使我难以理解。请记住,我将交替使用Socket.io和WebSockets。
假设我们有一个应用程序,该应用程序正在运行诸如gunicorn的后端Web服务器,以驱动以某种框架(例如Flask和Socket.io)编写的Python应用程序,该框架使用WebSockets不断将客户端连接到服务器。据我了解,使用WebSockets时,客户端与后端服务器(在这种情况下为gunicorn)保持恒定的开放连接,并且数据包直接在后端服务器和客户端之间交换,而无需进行任何“中间人”。也就是说,假设我们将Nginx作为运行在端口80上的前端WebServer和运行在端口5000上的gunicorn,那么在建立连接之后,前端服务器将不会再经过任何数据包,而会将它们直接发送到后端服务器。但是,在许多在线教程中,我仍然看到Web开发人员通过设置配置以转发所有WebSocket数据包来配置Nginx来代理gunicorn,通常使用Location /socket.io{....}
并将...
替换为{语句转发到端口5000。
请问有人能解释这3个难题的主要部分(WebSocket / Socket.io,Nginx和Gunicron)之间的相互作用吗?
谢谢