0

我正在建立一个用户可以控制网络摄像头左右转动的网站。每个用户都有一分钟的行动。网站上将有一个排队系统,允许用户一个一个地控制摄像机。所以我的问题如下,有人对如何构建这个排队系统有建议吗?我可以使用任何教程或代码吗?

非常感谢!

4

1 回答 1

1

有一个数据库表来跟踪队列,例如:

队列(id、session_id、start_time、last_update)

当用户点击您的页面时,将他们插入到队列表中。在页面上使用常规的 ajax 调用(可能是 30 秒)来轮询服务器以查看当前用户是否已打开。如果用户是表中的第一条记录,那么就轮到他了,因此将 start_time 更新为当前时间并发送您的 ajax 响应,告诉浏览器显示带有相机移动按钮的 UI。

当一个按钮被按下时,在服务器端验证它实际上是这个用户转动并且他的 start_time 是 < 1 分钟前,然后才允许该操作。如果轮到他,将他从表中删除,以便下一个用户成为第一条记录并轮到他,然后向浏览器发送响应,以便它可以隐藏相机 UI 并发出消息。

除了在点击页面时插入队列之外,还要检查控制相机的用户是否有 1 分钟,如果有,则删除他的记录(或者可以在下面的 cronjob 上完成)。

每次 ajax 轮询触发时,last_update使用时间戳更新用户。使用 cronjob 或仅在服务器端调用来检查他队列中的任何记录是否有一个last_update早于较短时间的记录,例如 30 秒。如果找到任何记录,则删除它们,因为这些用户不再是在页面上。这也将防止攻击者试图填满您的队列。

在同一个 cronjob 上,检查轮到它的用户是否已start_time填充,如果 30 秒后他还没有启动,则从队列中删除。

ajax 调用将使它变得漂亮和无缝,但它们不是必需的,如果用户禁用了 Javascript,您仍然可以检测到并使用整个页面的元刷新来代替。

于 2012-11-13T09:21:09.207 回答