如何实现这样的功能:一个访客,如果已经打开了这个网页,那么在新窗口中再打开这个网址就提示已经打开,或者直接跳到已经打开这个网址的窗口。描述可能比较绕,我举个例子。做在线聊天,一个人在浏览器中输入www.***.com/chat 那么浏览器正常打开这个页面。如果这个页面不关闭,他在新窗口再输入这个网址,就不能让他再打开了。提示已经打开过这个网页,或者直接切换到已经打开这个网址的窗口。如何实现,请具体指教。
PS:我已经试过cookie了,用cookie记录这个网页是否被打开了,同时设置浏览器关闭cookie失效,但是有几个问题解决不了:
一是,如果用两个浏览器,是可以同时打开这个网页的。因为cookie不能跨浏览器;
二是,有时候浏览器异常关闭,那么这个cookie值就没有失效,下次就打不开这个网页了。重分悬赏,如果发错区,请版主移动,谢谢。cookie浏览器聊天
PS:我已经试过cookie了,用cookie记录这个网页是否被打开了,同时设置浏览器关闭cookie失效,但是有几个问题解决不了:
一是,如果用两个浏览器,是可以同时打开这个网页的。因为cookie不能跨浏览器;
二是,有时候浏览器异常关闭,那么这个cookie值就没有失效,下次就打不开这个网页了。重分悬赏,如果发错区,请版主移动,谢谢。cookie浏览器聊天
如果做的是局域网内的 应用的话 还是有实现的可能
其它情况的话 建议放弃吧。。
2.浏览器端定时与服务器端“交流”,服务器端在期望时间内没有收到浏览器端信息则认为用户已下线,初始化各种状态(用户可以再次进入)
搜了一下,唯一标识tab好像是个很难的问题,基本上都说不能。我16楼说的分配唯一标识指的是在页面打开之后发送一个AJAX,返回的那个值必须每次都是不同的,至少对于单个用户来说必须是每次都不同的。不过对于所有用户都不同可能更好处理一些,对服务器的压力可能也更小一些。
假定 打开页面后 设置一个 在cookie中设置一个key 他的值是当前时间
每间隔 1秒 刷新时间页面 开始 要判断 这个key是否存在
不存在 表示没有 打开页面
存在 则看 他的值的时间 和 当前时间 相差多少 相差很少 1秒的话 有理由认为 有一个页面已经打开了
那么跳转其他页面
否则 正常开始
感觉有点啰嗦
假定 打开页面后 设置一个 在cookie中设置一个key 他的值是当前时间
每间隔 1秒 刷新时间页面 开始 要判断 这个key是否存在
不存在 表示没有 打开页面
存在 则看 他的值的时间 和 当前时间 相差多少 相差很少 1秒的话 有理由认为 有一个页面已经打开了
那么跳转其他页面
否则 正常开始
感觉有点啰嗦 还是这个问题,如果相差少于一秒,是判断页面已经打开这是第二次打开。还是判断为刚刚关闭了页面又重新打开了这个页面?
假定 打开页面后 设置一个 在cookie中设置一个key 他的值是当前时间
每间隔 1秒 刷新时间页面 开始 要判断 这个key是否存在
不存在 表示没有 打开页面
存在 则看 他的值的时间 和 当前时间 相差多少 相差很少 1秒的话 有理由认为 有一个页面已经打开了
那么跳转其他页面
否则 正常开始
感觉有点啰嗦 还是这个问题,如果相差少于一秒,是判断页面已经打开这是第二次打开。还是判断为刚刚关闭了页面又重新打开了这个页面?
你页面 如果打开着
那么 那个cookie里面的数值 每秒换一次
所以你 间隔1秒检查 1次 就知道有没有其他人在动了
办法是很多的
要么页面关闭时用onunload清掉服务端session,但是还不够,你要考虑异常关闭以及断网的情况。
再或者你做一个“心跳包”的东西,客服端每隔几秒向服务端发信息表示还在线
假定 打开页面后 设置一个 在cookie中设置一个key 他的值是当前时间
每间隔 1秒 刷新时间页面 开始 要判断 这个key是否存在
不存在 表示没有 打开页面
存在 则看 他的值的时间 和 当前时间 相差多少 相差很少 1秒的话 有理由认为 有一个页面已经打开了
那么跳转其他页面
否则 正常开始
感觉有点啰嗦 还是这个问题,如果相差少于一秒,是判断页面已经打开这是第二次打开。还是判断为刚刚关闭了页面又重新打开了这个页面?
你页面 如果打开着
那么 那个cookie里面的数值 每秒换一次
所以你 间隔1秒检查 1次 就知道有没有其他人在动了
办法是很多的cookie的值更改,只有在网页再次加载的时候才能使用,不是说立马就能用的。
要么页面关闭时用onunload清掉服务端session,但是还不够,你要考虑异常关闭以及断网的情况。
再或者你做一个“心跳包”的东西,客服端每隔几秒向服务端发信息表示还在线我现在有了个思路,是服务器端判断,既然是聊天,肯定有向服务器发送状态的进程,所以我只需要判断他在线,就不让他再打开了。不要cookie,解决跨浏览器问题。