org.apache.catalina.websocket.WebSocketServlet
을 사용하는 서블릿을 작성하려고합니다. websocket 채팅 예제를 찾았지만 websocket 서버 (이 서블릿에서 구현 됨)에 대한 수신 포트를 어떻게 지정할 수 있습니까? 예를 들어 포트 11337
의 클라이언트 연결을 수신 대기해야합니다. 그러나 어떻게 표현할 수 있습니까?tomcat websocket 서블릿 수신 포트
public class TestServlet extends WebSocketServlet {
private static final Logger logger = LoggerFactory.getLogger(TestServlet.class);
public TestServlet() {
logger.error("Initializing TestServlet");
}
@Override
protected StreamInbound createWebSocketInbound(String subProtocol, HttpServletRequest request) {
logger.error("New WS connection, subProtocol=" + subProtocol + ", request=" + request.getRequestURL());
return new TestConnection();
}
private class TestConnection extends MessageInbound {
@Override
protected void onBinaryMessage(ByteBuffer byteBuffer) throws IOException {
logger.error("onBinaryMessage");
}
@Override
protected void onTextMessage(CharBuffer charBuffer) throws IOException {
logger.error("onBinaryMessage: " + charBuffer);
sendMessage("Test message");
}
public void sendMessage(String message) {
WsOutbound outbound = this.getWsOutbound();
CharBuffer cb = CharBuffer.wrap(message);
try {
outbound.writeTextMessage(cb);
} catch (IOException e) {
logger.error("failed to write outbound");
}
}
}
}
어디서 나는 수신 대기 포트를 설정하는 방법 내가 찾을 수 없습니다 :
OK, 여기에 (간체) 코드입니다. 공식 websocket 설명서도 많은 도움이되지 않습니다.
그래서 서블릿 설정에서 어딘가에 설정할 수 있지만 어디서 찾을 수없는 것 같아요.
누구에게 아이디어가 있습니까?
RFC6455에 따르면 클라이언트에서 소켓을 "열려면"HTTP 요청을해야합니다. 포트 번호는 사용되지 않습니다. – jalynn2
@ jalynn2, 실제로 각 클라이언트에서 서버 (보안 및 비보안)에 두 개의 연결이 필요합니다. 이 연결은 하나의 서블릿에 의해 제공되어야합니다. 그래서 별도의 포트 (예 : 8443 및 8444)가 필요합니다. 클라이언트는 서버의 포트를 연결하도록 지정하는'libwebsockets' 라이브러리를 사용하여 C++로 구현됩니다. 대답은'server.xml'과'Connector' 엘리먼트 어딘가에 있다고 생각합니다. 그러나 그물에서 유용한 것을 찾을 수는 없습니다. – maverik
실제로 Tomcat에서 실행 중이거나 Tomcat 클래스를 사용하여 자신의 서버를 작성하고 있습니까? –