【发布时间】:2016-05-31 19:39:49
【问题描述】:
我正在开发一个 Web 应用程序,我必须在其中显示,比如说,一个任务列表。
我需要做的是一旦用户打开一个任务(即在他的浏览器中打开它),它会从所有其他用户列表中删除,或者它显示该任务已被执行,没有人可以打开已经打开的任务别人。
此外,我需要一旦用户关闭任务(例如用户关闭他的浏览器),它就会重新添加到其他用户的任务列表中。
请问我该怎么做? WebSocket 在客户端?还有其他更好的选择吗?
如何在服务器端进行管理?
谢谢
【问题讨论】:
-
到目前为止你做了什么来实现这种行为?您使用的技术堆栈是什么? (例如,前端的 JQuery,中间件的 Spring 等)。您可以在任务的“单击”时触发 ajax 查询,并让服务器处理从“任务池”中删除该任务,并在用户“关闭”任务时触发另一个 ajax 查询。在这一点上,我只能告诉你。
-
直到我对“可行性”有了清晰的认识才开始编码,我考虑在客户端打开一个 websocket,用一段时间(true)来保持锁定任务,但不确定,我以前从未做过这种事情(使用 websocket)只阅读了一些文档,但我认为 - 例如 - 100.000 websocket 同时连接我的服务器检查锁不会'不是个好主意...
-
如果您希望一个用户的“打开任务”活动立即对所有其他用户产生影响,那么像基于 ajax 的轮询之类的黑客攻击似乎不是一个好主意。 Websockets 将是首选方法。看看这个帖子的答案link
-
顺便说一句,我不知道为什么你的问题被否决了。对我来说似乎是一个合法的问题。
-
取决于您如何实施最终解决方案。由于每个页面都会创建一个 websocket,并且如果它们都在不同的选项卡中“活着”,跨越 100 个用户,您可能会遇到最终创建大量 websocket 连接的场景。但是,您可以使用 Web Workers 之类的东西。或管理 websocket 的框架。我对这些了解不多,因此您可以自行研究,看看如何有效地管理 websocket 连接。祝你好运!
标签: java