当web开发用多个人同时进行聊天的时候,jms怎么实现(例如:a与b聊天)在他们之间传递保证了他们能够只访问和收到彼此的通信信息。都是访问队列,那么多人点对点通信就得建立多个队列?(感觉好麻烦)。个人不是很懂jms。请指教。最好能够说具体。谢谢。jmsweb开发聊天

解决方案 »

  1.   

    发消息时 报文里 可以包含接受方的id, 服务器根据接受方的id把消息发给特定的接受者就行了。
      

  2.   

    谢谢你认真的解答。服务器根据接受方的id把消息发给特定的接受者就行了》》这个我不知道怎么弄。就像qq一样 登录的时候 用socket 连接到服务器, 服务器用list维护个在线用户的列表(当然也可以用map)服务器接受到消息,根据id查找对应的在线用户,再用socket把消息发给目标客户就好了。
      

  3.   

    你可以不用为每一对用户都去创建一个通道,那用户量一多一个用户再和多个用户聊天那数量不好控制了.用广播的方式来处理.每一个用户都有一个唯一的ID,然后在创建MessageConsumer时指定过滤器.比如String userId = "0123456789";
    String filterStr = "(USER_ID=" + userId +")";
    MessageConsumer consumer = Session.createConsumer(destination,filterStr,true);以上代码后consumer这个消息接收者就只会接收属性中"USER_ID"等于"0123456789"的消息了.那么发送消息的时候只需要附带上这个属性就行了.如下.String targetUserId = "0123456789";
    ObjectMessage sendMessage = .....;//将要发送的消息,只是举例.
    sendMessage.setStringProperty("USER_ID",targetUserId);
    这样应该可以达成你的目标.