我正在制作一个PHP & MySQL (和CodeIgniter)视频/聊天程序,1)显示当前的在线用户,2)迫使所有用户在版主离开时断开连接。
但是,HTTP是无状态的。实现上述功能的最佳方法是什么?
是否应该对每个用户使用心跳AJAX请求来确定当前状态?我如何知道用户(如版主)是否断开了连接?
发布于 2012-08-01 02:32:48
这将需要一个接近实时实现。您可以有一个表,其中创建了所有的房间/聊天会话。然后,在您的用户表中,您可以有一个版主列和一个当前的房间id列。
房间桌子
列: ID,USER_ID,CREATED_AT,UPDATED_AT,NAME,PASSWORD,HAS_MODERATOR (bool) .
当版主加入一个房间时,您可以将"HAS_MODERATOR“字段更新为true或1,然后您可以编写一个简单的长轮询脚本,它只需向php页面或路由发出ajax请求,并返回一个true或false值。如果它返回为真,那么版主仍然在房间里,否则您可以关闭房间并强制通过javascript或其他东西进行重定向。php脚本只需检查has_moderator是否为真,然后遍历users表,检索所有的版主,并检查他们所在的房间。与您检查的房间匹配版主所在的当前房间。这将确保会议室内有一位主持人。
这可能对你有帮助:Notify Ajax/Javascript that background PHP has completed
发布于 2012-08-01 06:14:48
我认为您可以不使用HTTP的状态逻辑来实现它。您需要将当前会话状态存储在数据库中。每个用户请求都有一个经过身份验证的用户名cookie和一个会话id,用于从后端DB中提取会话。此外,还将有一个变量来检查版主是否存在(心位样式检查)。当版主离开时,只需更改会话状态,这将使所有其他人都退出。如果你需要我建议的任何步骤的细节,请告诉我。
https://stackoverflow.com/questions/11751764
复制相似问题