【发布时间】:2025-12-11 04:55:01
【问题描述】:
我目前正在处理一个 Symfony 项目(我们称之为example.com),我需要在该项目上更改角色管理。我已经根据新的角色层次结构修改了 php 代码。
但是,我们还有一个 NodeJS 服务器负责视频流服务。当客户端连接到 Web 服务时,他访问的网页(example.com/webcam 由 symfony/twig 生成)包含 JS 打开到 Socket 的连接。此套接字直接连接到运行在自定义端口 (wss://example.com:9900) 上的 nodeJS 服务器。
下图总结了这一点。
正如我之前所说,我需要包含角色管理。然而,目前,关于角色的一切都位于 symfony 代码中。我真的不想将它导出到 nodeJS 服务器,因为以后维护它会更困难(需要修改的两个地方),而且据我所知,在 nodeJS 中没有完全相同的角色管理。
所以我考虑让 websocket 流量通过 symfony 传递,然后将其发送回客户端,如下面的架构所示
但是:
- 我不知道这是否是最好的方法,所以如果您知道另一种方法,或者您认为在两个网络服务器上复制角色管理逻辑会更好,我会感谢您的建议
- 如果这是一个很好的方法,我如何在 symfony 上创建一个高效的 websocket 来重定向流量?
【问题讨论】:
-
不知道如何帮助您解决问题,但我确实喜欢您的图片。
-
您有单独的服务器来存储数据库吗?在这种情况下,将所有可用角色也存储在数据库中并检查用户是否可以通过 Node.js 直接在数据库中访问正确的角色
-
是的,角色存储在另一个数据库中,因此我可以使用 Symfony 和 nodeJS 访问它们。但是,角色层次结构存储在 yml symfony 文件中。因此,如果我想知道用户拥有的每一项权利,我需要同时访问数据库和配置文件。但是,是的,这是另一种可能性。