【发布时间】:2021-08-04 22:47:20
【问题描述】:
我正在学习 Node/Express/socket.io - 我按照说明使用 ejs 文件来定义我的页面并动态更改它们。
问题是我想通过 socket.io 使用命名空间的特性。如果用户“John”在房间“1”中,他不应该收到来自房间“2”中用户“Jack”的任何消息。为了在前端直观地实现这一点,我需要在客户端站点上操作 html 文件(或 ejs)文件。然而,似乎 ejs 将服务器端的所有文件保存在“views”文件夹中 - 因此目前“John”和“Jack”会看到所有消息,即使是在两个不同的房间。
是否有任何选项可以以某种方式将“聊天页面”定义为静态并保留在“公共”文件夹中,而其余的 ejs 文件仍保留在视图文件夹中?
【问题讨论】:
-
请更详细地描述您使用命名空间的实际聊天问题,因为您应该能够仅在客户端代码中完全解决该问题,而无需操作文件本身。
-
我不确定你到底是什么意思,但就像上面的评论所说,这可以完全在前端完成。您可以使用 res.render 提供 ejs 文件,也可以使用 res.sendFIle() 发送静态 html 文件,这完全取决于您的需要。在您的前端,您可以使用 js 来接收事件(获取消息或您想要做的任何事情)
标签: node.js express socket.io ejs