2013-08-07 35 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 
     } 
    } 
} 
相關問題