Java 如何在web应用程序中创建实时并发锁?

Java 如何在web应用程序中创建实时并发锁?,java,Java,我正在开发一个web应用程序,我必须在其中显示任务列表。 我需要做的是,一旦用户打开一个任务(即在他的浏览器中打开),它会从所有其他用户列表中删除,或者显示该任务已被执行,则任何人都无法打开已由其他人打开的任务。 此外,我需要在用户关闭任务(例如用户关闭浏览器)后,将其重新添加到其他用户任务列表中。 请问我怎么做?客户端中的WebSocket?还有其他更好的选择吗?如何在服务器端进行管理? 谢谢对于您的问题,我知道有两种解决方案: Ajax(和长轮询) 使用Ajax,您可以每X秒轮询一次服务

我正在开发一个web应用程序,我必须在其中显示任务列表。
我需要做的是,一旦用户打开一个任务(即在他的浏览器中打开),它会从所有其他用户列表中删除,或者显示该任务已被执行,则任何人都无法打开已由其他人打开的任务。

此外,我需要在用户关闭任务(例如用户关闭浏览器)后,将其重新添加到其他用户任务列表中。

请问我怎么做?客户端中的WebSocket?还有其他更好的选择吗?
如何在服务器端进行管理?

谢谢

对于您的问题,我知道有两种解决方案:

  • Ajax(和长轮询)
使用Ajax,您可以每X秒轮询一次服务器,以获取实现所述行为所需的数据。这可能有效,但不是推荐的方法。继续读为什么

  • WebSocket
就像您在桌面应用程序上使用的套接字(因此得名),您可以打开WebSocket连接(而不是HTTP连接),根据需要保留多长时间,并仅在完成后关闭它。这是让数据在客户端和服务器之间不断流动的首选方法。也是

还有其他技术,如WebRTC和服务器发送事件,但考虑到您对问题的描述,这些可能不是您想要的

离题:我不知道为什么你的问题被否决了,在我看来是合法的。

对于你的问题,有两种解决方案(我知道):

  • Ajax(和长轮询)
使用Ajax,您可以每X秒轮询一次服务器,以获取实现所述行为所需的数据。这可能有效,但不是推荐的方法。继续读为什么

  • WebSocket
就像您在桌面应用程序上使用的套接字(因此得名),您可以打开WebSocket连接(而不是HTTP连接),根据需要保留多长时间,并仅在完成后关闭它。这是让数据在客户端和服务器之间不断流动的首选方法。也是

还有其他技术,如WebRTC和服务器发送事件,但考虑到您对问题的描述,这些可能不是您想要的


离题:我不知道为什么你的问题被否决了,在我看来是合法的。

到目前为止,你做了什么来实现这种行为?您使用的技术堆栈是什么?(例如前端的JQuery、中间件的Spring等)。您可以在“单击”任务时触发ajax查询,让服务器处理从“任务池”中删除该任务的操作,并在用户“关闭”任务时触发另一个ajax查询。在这一点上,我能告诉你的就是这些。直到我对这一点的“可行性”有了一个清晰的概念,我才开始编码,我考虑在客户端打开一个websocket,用一段时间(真的)来锁定任务,但不确定,我以前从未做过这种事情(使用websocket),我只读过一些文档,但是,我认为,例如,使用100.000 websocket同时连接我的服务器并检查锁不是一个好主意……如果您希望一个用户的“打开任务”活动立即对所有其他用户产生影响,那么像基于ajax的轮询这样的黑客似乎不是一个好主意。WebSocket将是首选方法。顺便说一句,看看这个帖子的答案,我不知道为什么你的问题被否决了。对我来说似乎是个合法的问题。这取决于你如何实施你的最终解决方案。由于每个页面都会创建一个websocket,并且如果所有这些websocket都在不同的选项卡中“活动”,那么在100多个用户中,您可能会遇到这样一种情况,即最终会创建大量websocket连接。但是,您可以使用以下内容。或管理WebSocket的框架。我对这些知识不太了解,所以您可以自己研究,看看如何有效地管理websocket连接。祝你好运到目前为止,你做了什么来实现这种行为?您使用的技术堆栈是什么?(例如前端的JQuery、中间件的Spring等)。您可以在“单击”任务时触发ajax查询,让服务器处理从“任务池”中删除该任务的操作,并在用户“关闭”任务时触发另一个ajax查询。在这一点上,我能告诉你的就是这些。直到我对这一点的“可行性”有了一个清晰的概念,我才开始编码,我考虑在客户端打开一个websocket,用一段时间(真的)来锁定任务,但不确定,我以前从未做过这种事情(使用websocket),我只读过一些文档,但是,我认为,例如,使用100.000 websocket同时连接我的服务器并检查锁不是一个好主意……如果您希望一个用户的“打开任务”活动立即对所有其他用户产生影响,那么像基于ajax的轮询这样的黑客似乎不是一个好主意。WebSocket将是首选方法。顺便说一句,看看这个帖子的答案,我不知道为什么你的问题被否决了。对我来说似乎是个合法的问题。这取决于你如何实施你的最终解决方案。由于每个页面都会创建一个websocket,并且如果所有这些websocket都在不同的选项卡中“活动”,那么在100多个用户中,您可能会遇到这样一种情况,即最终会创建大量websocket连接。但是,您可以使用以下内容。或管理WebSocket的框架。我对这些知识不太了解,所以您可以自己研究,看看如何有效地管理websocket连接。祝你好运