我正在尝试编写一个使用
好的,这是(简化后的)代码:
org.apache.catalina.websocket.WebSocketServlet
的servlet。我找到了一个websocket聊天的示例,但是我不知道如何为websocket服务器(在此servlet中实现)指定侦听端口?例如,我需要在端口11337
上监听客户端连接。但是我该如何表达这一点?好的,这是(简化后的)代码:
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");
}
}
}
}
我找不到在哪里以及如何设置监听端口。官方websocket文档也没能提供太多帮助。
因此我猜测它可以在Servlet的设置中某个地方进行设置,但是我找不到具体位置。
有人有任何想法吗?
libwebsockets
库,该库允许指定要连接的服务器端口。我认为答案在server.xml
和Connector
元素中,但我在网络上找不到任何有用的信息。 - maverik