我正在构建一个网站,用户可以控制网络摄像头左右转动。 每个用户都有一分钟的行动。网站上将会有一个排队系统,允许用户逐个控制摄像机。 所以我的问题如下,是否有人建议如何建立这个排队系统?我可以使用任何教程或代码吗?
非常感谢!
答案 0 :(得分:1)
有一个数据库表来跟踪队列,例如:
queue(id,session_id,start_time,last_update)
当用户点击您的页面时,将它们插入队列表。在页面上使用常规的ajax调用(可能是30秒)来轮询服务器以查看当前用户是否已启动。 如果用户是表格中的第一条记录,则轮到他了,所以将start_time更新为当前时间并发送ajax响应,告诉浏览器显示带有相机移动按钮的UI。
当按下某个按钮时,在服务器端验证该用户是否已经转动并且他的start_time是< 1分钟前,在允许行动之前。如果轮到他了,请将他从表中删除,以便下一个用户成为第一个记录并轮到他,然后向浏览器发送一个响应,以便它可以隐藏相机UI并发送消息。
除了在点击页面时插入队列,还要检查控制摄像机的用户是否有1分钟,如果是,则删除他的记录(或者可以在下面的cronjob上完成)。 / p>
每次启动ajax轮询时,都会使用时间戳更新用户last_update
。使用cronjob或仅在服务器端调用,以检查其队列中的任何记录是否具有短于较短时间的last_update
,例如30秒。,如果找到任何内容,则删除它们,因为这些是不再在页面上的用户。这也可以防止攻击者试图填满您的队列。
在同一个cronjob上,检查转动它的用户是否填充了start_time
,如果30秒后他还没有启动,则从队列中删除。
ajax调用会使它变得美观和无缝,但它们并不是必不可少的,如果用户已禁用Javascript,您仍然可以检测到它并使用整个页面的元刷新。