使用WebSockets显示计时器

时间:2016-03-30 07:50:44

标签: mongodb laravel nginx timer websocket

我有一个应用程序(在Nginx上运行Laravel + MongoDB),我从数据库中提取一些数据并在屏幕上呈现它。该应用程序专注于多个现实生活对象。打开对象后(is_on等于数据库中的true),屏幕上的计时器需要开始计时。一旦关闭对象(is_on等于数据库中的false),时钟就会停止滴答并重置为0.时钟的格式为HH:MM:SS。因此它显示了真实生活对象的打开时间。

我的问题是我现在不知道如何保存/实现这样的计时器。当用户请求页面时,我从数据库中提取必要的数据。如果我还将计时器保存在数据库中,则必须每秒进行一次查询,这是非常糟糕的做法。

我记得有关WebSockets的一些事情,并试图调查它们。我实际上设法构建了一个基本的Hello World聊天应用程序,但实际上并不知道如何在我的项目中实现它。在数据库中没有它的位置(因为查询),所以我真的不知道在服务器上保存该计时器的位置。我也怀疑WebSockets是否可行。

WebSockets也是如此,如果是的话,你们能指出我如何实现这个目标的正确方向吗?如果没有,你能告诉我应该做什么吗?

提前致谢!

1 个答案:

答案 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.jssocket.io库,提供良好的性能,如果你知道你做了什么,并不是非常复杂的实现。