需求:服务器端增加一条消息,会自动推送到客户端,客户端如果不在线,下次登陆后也会接收到,且每条消息每台电脑的客户端只会接受一次,求原理另外我的疑问是:1.服务器上增加一条消息后,如何推送到客户端(如果客户端每次登陆后,把ip提交给服务端,然后服务端往这个ip的指定端口发送数据,那么假如客户端关闭后 如何知道客户端已经关闭了,如果不知道,盲目发送,会造成大量服务器资源消耗)
2.假如客户端离线,没接受到这条消息,服务器端怎么知道这个客户端没有接受到呢
3.假如每条消息客户端只接受一次,接受过的不在接受 ,客户端如何知道这条消息是否接受过没,如果客户端进行消息保存,每次都进行判断,也会造成客户端资源的开销

解决方案 »

  1.   

    同意huainian23观点,支持客户端自己获取信息,可以减少服务器资源消耗
    服务器判断客户端是否连接可以用PING命令,也可以在数据库打标记,两者都有问题,PING命令耗时较长,而且不适合使用动态IP地址客户端的使用,数据库打标记如果客户端非正常关闭,就无法判断客户端是否连接,还是需要借助PING命令。
      

  2.   

    在服务端做标示的话,如何知道这个客户端推送过吗,根据ip? 如果客户端是动态ip的话,会造成二次推送的,如果客户端非常多,光查询都会对服务器造成很大的压力