我在基於Spring MVC的服務器上搜索了很多關於實現WebSocket/XMPP的內容,但無法達成具體的答案。因此,這裏是我的要求在基於Spring MVC的服務器上實現WebSocket
- 從客戶端接收的消息(在我的情況下,這將是一款Android/iOS移動)通過WebSocket的/ XMPP Tomcat服務器上,並在服務器端解析的實際消息
- 發送從服務器應用程序到WebSocket/XMPP客戶端的消息
如果有人可以幫助我指出一些好的教程或演示代碼,這將是一個很大的幫助。
我在基於Spring MVC的服務器上搜索了很多關於實現WebSocket/XMPP的內容,但無法達成具體的答案。因此,這裏是我的要求在基於Spring MVC的服務器上實現WebSocket
如果有人可以幫助我指出一些好的教程或演示代碼,這將是一個很大的幫助。
運行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客戶端將收到消息。
享受!
順便說一句:這正是我現在正在設置的過程中......仍在學習。
請查看:www.xchat.io。它是基於異步Spring MVC(DefferredResult,你知道),XMPP和jQuery構建的。它很有希望。
我不確定這是不是完美的方式來實現或不,但現在我已經找到了一個解決方案,它會很高興在這裏分享。
有兩個步驟,你必須完成。 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
}
}
}