本人要实现这么一个功能,某个客户端A提交了工作A 给 某个组织机构 B,凡是属于该组织机构B的客户端,都可以及时在屏幕右下角弹出提示,提醒及时处理;如果采用TIMER控件即时查询的话,这个时间间隔肯定不能太长,如果取半分钟的话,会不会对服务器造成很大负担?(大约有100多个客户端)
   有没有更好的方法?

解决方案 »

  1.   

    会的,最好是加入即时通讯功能,如果客户端数量不大的话TCP协议即可解决!
      

  2.   

    即时通讯功能不太现实,因为上面的业务处理都是基于SQL SERVER 数据库的,而且连要进行提示的客户端IP地址都是不确定的,没办法按TCP协议解决
      

  3.   

    很简单,用IdTCPClient+IdTCPServer
    每个客户端根据接收到的命令决定是否去查询数据,而给那一个客户发消息完全可以控制的
    至于你说的IP不确定,因为是有连接的,客户端/服务嚣连接后,互发信息不需要再用到IP的。如果想不明白,就老老实实用Timer吧
      

  4.   

    用IdTCPClient+IdTCPServer解决的方法,比较稳妥.
      

  5.   

    30秒查一次 服务器负担大不大,要看有多少个客户端都这么做
    100多个客户端,就等于每秒6个查询,还是有点压力的可以建一个状态服务器SS,它30秒查一次所有人的状态
    每个客户端向它查自己的最新状态
    或者SS查到每个客户端的状态变化后,主动通知每个客户端
      

  6.   


    IdTCPClient+IdTCPServer 的方法我研究了下,还是有个地方没搞清楚。就是 当客户端发送消息到服务器端时,服务器端,根据客户端发送的消息,如何向 指定的客户端发送消息(比如有100个客户端,服务器端将消息发送到其中几个客户端)?
      

  7.   

      我也有类似的需求:根据工作流,项目组提交项目给审计经理,审计经理签批后转到总经理。 当项目组提交项目后,审计经理的MIS操作界面右下角会有提示,同样,当项目由审计经理转给总经理后,总经理的操作窗口也会有提示,最后当总经理签批后,审计经理和项目组的所有人的系统操作窗口右下角都会有提示窗口。我想过用timer控件,比如每隔5分钟就查询一次数据表,如果有新记录,就显示提示。 但是MIS较大,而且有通过VPN方式使用系统的, 所以感觉不太合理。请教诸位有什么好办法?
      

  8.   

    有2个应用的用户新任务就是这样查的,只是因为整个应用都是client/webserver模式
    所以,这个功能也就与其他查询一样,都是向后台的公共的应用服务程序(isapi)直接查询的
      

  9.   

    在IdTcpServer的Execute方法里有个参数TIdPeerThread(indy9),或(TIdContext),这样每个客户端连接成功后,服务器都会为他分配一个线程或者IdContext,你需要保存这个到一个链表或数组中,直接对这个线程或IdContext来写就可以了,仔细看indy的Chat那个DEMO
      

  10.   


    看了那个CHAT例子,确实有很多启发,觉得可以满足实现要求。谢谢大家