我的网站上有一个聊天室。我想在聊天室中编制一个在线用户列表。
最好的方法是什么? 是记录用户访问的最后一页,如果是那个页面,它们是否在聊天室中?
可以使用哪些不同的技术来做到这一点?
由于
答案 0 :(得分:1)
如果您在聊天应用程序中使用Comet,那么您将拥有一个向服务器开放的通道,该通道将作为开放HTTP请求绑定到客户端。
只要该请求是开放的,用户就在房间里。如果请求关闭,则用户不再在房间内。
答案 1 :(得分:0)
Yshout每隔6秒对yshout / yshout.php执行一次AJAX请求。在yshout.php中添加一些代码,以跟踪它在过去10秒内看到的唯一身份用户数,并且应该设置。
修改:您想要聊天室中活跃的所有人的名称吗?我很想为此添加一个数据库表 - 每次他们点击yshout.php时,添加一个名称+时间戳条目并删除超过10秒的所有条目。然后使用GROUP BY名称进行查询以获取唯一用户。
编辑2 聊天客户端已经每隔六秒就在yshout.php上发布一个AJAX请求。您所要做的就是在'if(isset($ _ POST ['reqFor']))'子句(响应AJAX请求的位)中添加一段PHP代码。
保持简短!请记住,它会在每分钟150次的事情上受到重创。
答案 2 :(得分:0)
我会使用sessions javascript库来记录用户访问过的每个页面,然后通过javascript在聊天客户端中检索这些值。
sessvars.visited = [];
[如果sessvars.visited不是数组] sessvars.visited[] = location.href
sessvars.visited
以获取所有网址。例如,要使用Jquery列出HTML中的URL,请执行以下操作:var urlList = '';
$.each(sessvars.visited, function(key, value){
urlList += value + '<br />';
})
注意:Sessvars是具有非常大容量的Cookie的替代品(在大多数浏览器中为10mb)。但是,会话数据仅在活动窗口中可用。窗口关闭后信息丢失,据我所知,无法从其他窗口查询。因此,如果聊天在不同于他们浏览的窗口中打开,则无法使用。
答案 3 :(得分:0)
您应该每隔x秒向服务器发出一次javascript请求。
您必须这样做(用于检索正在进行的聊天对话和参与的用户列表)。
在服务器端,您知道因此请求而在用户上的内容。您只需记录这些请求。