node.js - 端口 80 上的 SocketIO 与 Express 一起

标签 node.js express websocket socket.io

我的 ExpressJS 应用程序与 Socket.io 一起运行,由于 SIO 较高端口的防火墙问题,我想切换到两者都在端口 80 上运行。

找到这个small article在我的开发机器上,它看起来运行良好。

我的问题是,这样做真的好吗?这是一个好的做法吗?如果不是为什么?

请指教。

最佳答案

在同一端口上运行 socket.io 和 Web 服务器是绝对有意义的。

webSocket 协议(protocol)(socket.io 所基于的)是专门为此设计的,它是 socket.io 使用的主要方式,原因有很多,包括同源权限以及端口 80 的客户端和服务器防火墙路由.

如果您没有意识到这一点,每个socket.io连接都以对特定路由的HTTP请求开始,然后一旦客户端和服务器之间的初始握手得到确认,协议(protocol)就会从HTTP“升级”为webSocket。由于所有 socket.io 连接都通过非常特定的路由进行连接,因此所有其他 HTTP 连接都可以轻松分离出来,并由您的 Web 服务器将其视为常规 Web 请求。

关于node.js - 端口 80 上的 SocketIO 与 Express 一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202671/

相关文章:

node.js - 如何使用express-validation和joi验证Express Nodejs字符串中的body参数是否可以转换为JSON

javascript - 路由时 express.js 不显示 console.log 消息

javascript - 如何将 Websockets 与 Pyramid 和 socket.io 一起使用?

python - 如何从websocket端点外部发出websocket消息?

node.js - Node.js 中的 GraphQL 查询返回 AWS CloudWatch 错误 "Unable to import module ' 索引'"

javascript - AngularJS 和 Node.js CORS 不适用于 PUT/POST

node.js - 更改模型后如何创建 Sequelize cli db 迁移

node.js - 仅将 JsonSchema 与 Mongoose 一起使用可能吗?

mysql - 在使用 MySql、express、angular、nodejs 时,express 和 node 的端口是否不同

javascript - 如何确保消息使用 WebSocket 到达目的地?