java的mina框架做聊天室服务器,怎么广播聊天信息。我现在是遍历保存的SESSION,然后逐个发送信息,有没有更高效的方法。

解决方案 »

  1.   

    建立session池  给每个session发消息
      

  2.   

    遍历行为是触发行为的基础你要对所有事情处理就需要进行遍历处理
    只是想办法做在底层还是坐在上层的区别你要做的比较另类可以这么干,反过来做,每个session方一个定时器。。定时从message缓存中去取需要发送的消息 呵呵 不过这么做效率不一定比原来高
      

  3.   

    一般广播都是服务端轮询每个用户进行发送的。
    由于广播的内容,都非常小,可能都不到1kByte,所以,速度还是会非常快的。
    如果楼主还觉得这样不够快,或者发送的广播信息比较巨大,可以参考P2P的扩散技术。我的想法是:
    让某些用户分担广播发送的工作。
    比如,有10000个用户在聊天室内,服务端可以指定100个人先将消息发给他们,
    然后,这100个人,每人再发99个人,就完成广播的扩散了。
    但是,服务端还要对本次广播的扩散情况进行辅助管理才行。
    客户端之间的广播传递,可通过UDP/TCP的“打孔技术”进行实现。当然,一般情况下,小信息的广播是绝对不用上述方法的,弊端要更多一些。