Apache Tomcat websockets服务器端消息

Apache Tomcat websockets服务器端消息,tomcat,websocket,Tomcat,Websocket,我已经成功地为tomcat WebSocket实现了一个简单的echo服务器示例。现在我需要从服务器向客户端发送连续消息。我如何做到这一点 提供服务器端代码 package org.playjava.websocket; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.CharBuffer; import javax.servlet.http.HttpServletRequest; import o

我已经成功地为tomcat WebSocket实现了一个简单的echo服务器示例。现在我需要从服务器向客户端发送连续消息。我如何做到这一点

提供服务器端代码

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);
        }



    }
}

在SimpleChoinBond的构造函数中启动一个线程,并在该线程中调用getWsOutbound().writeTextMessage()

顺便说一句,您使用的是Tomcat专有的WebSocket API,它在Tomcat 7中被弃用,在Tomcat 8中被完全删除。您应该切换到JSR-356JavaWebSocket API,该API在Tomcat7和Tomcat8中都完全受支持