2013-08-07 32 views
0

我在基于Spring MVC的服务器上搜索了很多关于实现WebSocket/XMPP的内容,但无法达成具体的答案。因此,这里是我的要求在基于Spring MVC的服务器上实现WebSocket

  1. 从客户端接收的消息(在我的情况下,这将是一款Android/iOS移动)通过WebSocket的/ XMPP Tomcat服务器上,并在服务器端解析的实际消息
  2. 发送从服务器应用程序到WebSocket/XMPP客户端的消息

如果有人可以帮助我指出一些好的教程或演示代码,这将是一个很大的帮助。

回答

1

运行Tomee 1.5.2

http://openejb.apache.org/downloads.html

激活ActiveMQ的JMS服务器。创建一个OpenEJB配置。

http://www.mail-archive.com/[email protected]/msg04327.html

建立的XMPP服务器的ActiveMQ协议侦听器(在activemq.xml中)

在Spring服务配置

,在主题/队列创建一个Spring JMS监听器(春季ListenerContainer)配置。

您可以使用JmsTemplate通过ActiveMQ将消息推送到队列/主题,XMPP客户端将收到消息。

享受!

顺便说一句:这正是我现在正在设置的过程中......仍在学习。

0

请查看:www.xchat.io。它是基于异步Spring MVC(DefferredResult,你知道),XMPP和jQuery构建的。它很有希望。

0

我不确定这是不是完美的方式来实现或不,但现在我已经找到了一个解决方案,它会很高兴在这里分享。

有两个步骤,你必须完成。 1.创建WebSocketServlet的子类而不是普通的HTTPServlet子类,并创建一个MessageInbound类的子类并覆盖其必需的方法。 P.S. :只有最新版本的tomcat支持WebSocket(apache tomcat 7.0.42或更高版本)。

这是一个WebSocket类。

public class WsChatServlet extends WebSocketServlet { 

    private static final long serialVersionUID = 1456546233L; 

    @Override 
    protected StreamInbound createWebSocketInbound(String protocol, 
      HttpServletRequest request) { 
     return new IncomingMessageHandler(); 
    } 
} 

这是一个简单的类,它可以发送/接收消息(字符串/二进制)。

public class IncomingMessageHandler extends MessageInbound { 

    @Override 
    public void onOpen(WsOutbound outbound) { 
     logger.info("Open Client."); 
    } 

    @Override 
    public void onClose(int status) { 
     logger.info("Close Client."); 
    } 

    @Override 
    public void onTextMessage(CharBuffer cb) throws IOException { 
     logger.info("Text Message received:" + cb.toString()); 
    } 

    @Override 
    public void onBinaryMessage(ByteBuffer bb) throws IOException { 

    } 

    public synchronized void sendTextMessage(String message) { 
     try { 
      CharBuffer buffer = CharBuffer.wrap(message); 
      this.getMyoutbound().writeTextMessage(buffer); 
      this.getMyoutbound().flush(); 

     } catch (IOException e) { 
      // Handle Exception 
     } 
    } 
} 
相关问题