我有一个在嵌入式Jetty(8.1.8.v20121106)中运行的WebSocket服务器,并希望通过jetty WebSocketClient从另一个Java应用程序连接到它.这是我使用的测试方法:
@Test
public void testWebSockets() throws Exception {
logger.debug("START testWebSockets()");
WebSocketClientFactory factory = new WebSocketClientFactory();
factory.setBufferSize(4096);
factory.start();
WebSocketClient client = factory.newWebSocketClient();
client.setMaxIdleTime(30000);
client.setMaxTextMessageSize(1024);
client.setProtocol("MyProtocol");
WebSocket webSocket = new ClientWebSocket();
String wsUrl = "ws://localhost:8080/websocket";
String wssUrl = "wss://localhost:8443/websocket";
Future future = client.open(new URI(wssUrl), webSocket);
WebSocket.Connection connection = (Connection) future.get(10, TimeUnit.SECONDS);
assertNotNull("No connection!", connection);
connection.sendMessage("TestMessage");
connection.close();
logger.debug("END testWebSockets()");
}
Run Code Online (Sandbox Code Playgroud)
使用wsUrl不是问题,但我无法使用wss.我不认为服务器是问题,因为我从javascript连接wss没有问题.我在这次测试中做错了什么?
服务器和客户端都在ssl设置上记录"坏记录MAC".这是服务器日志的最后一部分:
2013-01-15 10:26:06,398 qtp9902580-25 DEBUG org.eclipse.jetty.io.nio.ssl - [Session-1, SSL_NULL_WITH_NULL_NULL] unwrap OK NEED_TASK consumed=107 produced=0
2013-01-15 10:26:06,399 qtp9902580-25 DEBUG org.eclipse.jetty.io.nio.ssl - [Session-1, …Run Code Online (Sandbox Code Playgroud)