【发布时间】:2017-12-04 20:58:18
【问题描述】:
我的 socket io 和 Node express js 服务器现在都监听相同的端口。它托管在 AWS ElasticBeanStalk 中。它的工作很好。 现在由于安全限制,必须将套接字 io 移动到不同的端口。它是与 node js 应用程序相同的代码库的一部分。 我可以为套接字 io 监听不同的端口吗?这行得通吗?我必须在 ElasticBeanStalk 中进行哪些更改?是否需要打开新的端口或者端口有什么限制?
【问题讨论】:
-
哪些安全限制导致您必须将 socket.io 移动到与 Web 服务器不同的端口?通常安全限制都喜欢在同一个端口上。这就是 websocket/socket.io 被设计为与 http 服务器共享端口的全部原因。
-
Socket io 仅用于事件发布。因此在我们的用例中不需要对其进行保护。我们的节点应用程序是完全安全的,它需要授权承载令牌。并且节点正在工作的端口仅向 API 管理器公开。所以socket io应该在不同的端口来绕过API Manager
-
您当然可以在同一个 node.js 应用程序中监听 socket.io 的不同端口。对于常规 socket.io 连接(以几个轮询请求开始的默认连接),如果连接是从浏览器建立的,您可能还必须启用 CORS,以便浏览器允许连接到不同于网页。或者,您可以将 socket.io 客户端更改为立即使用不受 CORS 限制的 webSocket 启动。对于使用新端口需要对 AWS 进行哪些更改,我无能为力。
-
AFAIK 如果您通过其 express 实现使用 socket.io,它们只会绑定到同一个端口。如果你把这两个分开,你可以为socket.io选择你喜欢的任何端口,但它不会自动将JS文件传递到前端。
标签: amazon-web-services websocket socket.io amazon-elastic-beanstalk