我并没有实现做过,只是在想,用户数量很大的时候。那数据库表不就特别大。
从怎么大一张表里去查询哪几个人在线的,是不是很占资源。
另外比如我有2000个好友,那这个查询语句也变得很大。或者说我有2000个好友,要查询这些好友哪几个是在线的,好像很占资源的查询。有什么效率高的方法吗,复杂无所谓,关键要占服务器资源少。另外推荐个软件,如意工具箱,网上搜下,能下载到

解决方案 »

  1.   

    我不知道我的想法对么.
    可以存在本地吧,用户本地,比如说你上线了,你会通过服务器查询一次你当前好友的当前信息,包括用户的信息和在线信息,比如IP什么的,然后以后就是用户和用户之间的TCP协议的交互,比如说你上线或者下线给好友的IP直接发送状态消息,给服务器一个消息,取消你的当前在线状态或者上线状态。
      

  2.   

    才2000个,很占资源吗?用UDP连接
      

  3.   

    不用数据库的吧,我觉得就象“ping命令”,你上线的时候,就和你列表中的人保持心跳包一样的状态检测。每个人都只和自己列表中的人保持这个状态,就能实现所有人都看到自己QQ里列表其他人的实时状态了。
      

  4.   


    飞信就是这么做的,还有ejabberd(jabber服务器),都是客户端通知服务器,服务端再推送到别的客户端,这个是实时的。
      

  5.   

    当你QQ登陆后 客户端向服务端请求好友数据,服务端处理完数据后发给客户端 此时客户端就知道了所有好友的状态信息以后 客户端每过一段时间发送一个包到服务端,表示此QQ号在线当有QQ好友下线或上线 好友的上下线信息是由服务端发给客户端的 
      

  6.   

    http://hi.baidu.com/yiwenyida/blog/item/2dee03336c01c794a8018e68.html
    看下这个,希望对你理解有帮助