我有一个应用程序(在Nginx上运行Laravel + MongoDB),我从数据库中提取一些数据并在屏幕上呈现它。该应用程序专注于多个现实生活对象。打开对象后(is_on
等于数据库中的true
),屏幕上的计时器需要开始计时。一旦关闭对象(is_on
等于数据库中的false
),时钟就会停止滴答并重置为0.时钟的格式为HH:MM:SS。因此它显示了真实生活对象的打开时间。
我的问题是我现在不知道如何保存/实现这样的计时器。当用户请求页面时,我从数据库中提取必要的数据。如果我还将计时器保存在数据库中,则必须每秒进行一次查询,这是非常糟糕的做法。
我记得有关WebSockets的一些事情,并试图调查它们。我实际上设法构建了一个基本的Hello World聊天应用程序,但实际上并不知道如何在我的项目中实现它。在数据库中没有它的位置(因为查询),所以我真的不知道在服务器上保存该计时器的位置。我也怀疑WebSockets是否可行。
WebSockets也是如此,如果是的话,你们能指出我如何实现这个目标的正确方向吗?如果没有,你能告诉我应该做什么吗?
提前致谢!
答案 0 :(得分:0)
从你的问题:
我知道您在屏幕上打印的对象会被修改 用户在应用程序中,您的目标是实现这些目标 修改应用程序的其他活动客户端实例。
在这种情况下,正如您所提到的,我会指向websockets。它们是直接向客户端提供信息的好方法,因此客户端可以接收更新信号并修改界面,而无需用户操作。
为了实现通知客户端的逻辑,我建议使用推送方法,但这实际上取决于您想要通知的客户端类型,因为推送世界仍然有点棘手。
此基于websocket的推送实现的进一步阅读:
关于推旗的问题:
Difference between push and urgent flags in TCP
如果您的客户在浏览器或移动设备上运行,这个问题很好: How to send push notification to web browser?
另外html5 websockets:
http://www.websocket.org/aboutwebsocket.html
作为旁注:
一个很好的客户端 - 服务器实时通信架构基于node.js和socket.io库,提供良好的性能,如果你知道你做了什么,并不是非常复杂的实现。