2014-03-25 123 views
1

我已成功为tomcat websockets实现了一个简单的echo服务器示例。现在我需要从我的服务器向客户端发送连续的消息。我如何实现这一目标?Apache Tomcat websockets服务器端消息

目前服务器端代码

package org.playjava.websocket; 

import java.io.IOException; 
import java.nio.ByteBuffer; 
import java.nio.CharBuffer; 
import javax.servlet.http.HttpServletRequest; 
import org.apache.catalina.websocket.MessageInbound; 
import org.apache.catalina.websocket.StreamInbound; 
import org.apache.catalina.websocket.WebSocketServlet; 
import org.apache.catalina.websocket.WsOutbound; 

public class SimpleEchoServlet extends WebSocketServlet { 

    @Override 
    protected StreamInbound createWebSocketInbound(String string, HttpServletRequest hsr) { 
     return new SimpleEchoInbound(); 
    } 

    private static final class SimpleEchoInbound extends MessageInbound { 

     public SimpleEchoInbound() { 
      super(); 
     } 




     @Override 
     protected void onBinaryMessage(ByteBuffer message) throws IOException { 
      getWsOutbound().writeBinaryMessage(message); 
     } 

     @Override 
     protected void onTextMessage(CharBuffer message) throws IOException { 
      getWsOutbound().writeTextMessage(message); 
      getWsOutbound().writeTextMessage(message); 
      getWsOutbound().writeTextMessage(message); 
     } 



    } 
} 

回答

0

开始在SimpleEchoInbound的构造器线程,并调用getWsOutbound()。writeTextMessage()在该线程。

顺便说一下,您正在使用Tomcat专有的WebSocket API,该API在Tomcat 7中已弃用,并且已完全在Tomcat 8中删除。您应该切换到Tomcat 7中完全支持的JSR-356 Java WebSocket API和Tomcat 8.