想了一下,我的保持在线信息只是很简单地发所在系统的代码和操作员代码,所以存在这样一个问题,如果这个操作员已经掉过线,再发一道保持在线的消息,便显得没什么用处,虽然可以往服务端发消息,但是无法收到服务器发来的消息。
有一种方法是在服务器端有在线和不在线两种模式,如果掉线,会显示一个灰色的信息,定期(每天)清除一次,这种方式是可行的,但是不太严谨。
如果客户端掉线,只要能收到服务器发来的消息,就说明他是在线的,所以分在线和离线两种模式,还是有必要的,但如果每个结构体都保存客户端信息,并且每次收到一条消息都做判断,显然是不合理的。
还有一种方法是建立一个对话机制,如果收到一条消息,服务器做一个判断,然后再发一条消息给客户端,请求回复,如果收到回复,则证明在线,如果没收到,则为离线。这种方式也有点麻烦,且操作繁琐。
考虑下把第一种方法完善一下,然后采用吧