永发信息网

请问在实时聊天程序,怎么判断用户是否已登陆,已退出?

答案:2  悬赏:80  手机版
解决时间 2021-03-30 23:29
  • 提问者网友:最爱你的唇
  • 2021-03-30 17:13
我试过当用户登陆后修改数据库相应数据来做标识,当用户点击“退出”后,再将这个标识改过来。但是问题在于当用户直接关闭浏览器后,标识就没办法改了,这个用户将永远登陆不了。。于是我在Global.asa文件中的session_OnEnd事件中加上用户退出操作后,改变标识,这样做是可以,但是session结束的时间也太长了,一般都是10分钟左右,也就是说用户直接关闭浏览器后,要等上几分钟才能再次登陆,我试过改session的时间,但是最少也只能改为1,而且这样,有没有办法,当用户直接关闭浏览器后就会立刻修改标识。
我问过很多人,下面是我想的方法,但是我从来都没有实现过
用ajax,在body onunload事件(或 onbeforeunload事件)中异步调用,来修改标识。
按上面做,也还是不行。。关闭浏览器后,好像根本就没有异步调用。
还有就是怎么将信息显示给每个用户呢?在软件编程中可以使用线程,向每个连接的用户发送信息,但是在网页中好像不能使用这技术,只能用数据库保存信息,然后用户调用,但是当我用ajax调用信息的时候,读 取未读的信息,然后修改为已读,但是这样只有一个用户能读 到信息,如果是改为一次性读取全部,这样随着信息的增多,读取会很慢。。。。
大侠们帮帮忙,指点下小弟。。。不甚感激。。
小弟没分了。。
最佳答案
  • 五星知识达人网友:神鬼未生
  • 2020-02-09 02:31
让客户端在指定时间内给服务器发送一个证明在线的消息(比如一分钟)
服务器收到后再回发一个确认消息
正常退出时,就可以由客户端来发一个退出消息给服务器
服务器收到,同样回发一个确认消息
但是如果遇到非正常退出呢
比如说人家利用任务管理器直接把这个程序给关了
可能客户端将什么动作都不会做出
那只好在服务器收不到客户端发的证明在线消息一段时间后
判定客户端已经离线
还有一种办法
利用另一个进程来监视客户端
当客户端退出后
则发信息给服务器
随后也跟着退出
有点啰嗦,但愿有用吧
全部回答
  • 1楼网友:怙棘
  • 2019-10-27 07:34
任务占坑
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯