上一篇中说到:websocket - jsp之间的通讯,是通过websocket,socket.js实现的通讯。如果觉得写jsp或者js麻烦,或者不怎么会js,不是太懂,可以用webSocket的client来测试。下面看代码:
websocket连接:
/**
* websocket连接
* @throws URISyntaxException
* @throws InterruptedException
* @throws ExecutionException
* @throws IOException
*/
@Test
public void testWebScoket() throws URISyntaxException, InterruptedException, ExecutionException, IOException {
String jsUrl = "ws://localhost:18080/JeeSite/websocket";
//socketclient对象
StandardWebSocketClient client = new StandardWebSocketClient();
//开始摸手
ListenableFuture<WebSocketSession> lf = client.doHandshake(new WebSocketHandler() {
@Override
public boolean supportsPartialMessages() {
return false;
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
exception.printStackTrace();
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
System.out.println("Session :"+ session.getId());
System.out.println(message);
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("connection estabilshed Session :"+ session.getId());
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
System.out.println("connection closed Session :"+ session.getId());
}
}, jsUrl);
//摸手状态回调
lf.addCallback(new ListenableFutureCallback<WebSocketSession>() {
@Override
public void onSuccess(WebSocketSession result) {
System.out.println("callback onSuccess:"+result.getId());
}
@Override
public void onFailure(Throwable ex) {
System.out.println("callback onFailure:"+ex.getMessage());
ex.printStackTrace();
}
});
//摸手完成,获取房间,开个玩笑,获取session。
WebSocketSession sess = lf.get();
//发一个文本消息
TextMessage msg = new TextMessage("i'm donkey westom");
sess.sendMessage(msg);
//退房,关闭session .否则服务器端exception : forcely closed by remote host
sess.close();
}
效果:
junit控制台:
tomcat控制台:
socketJs连接:效果和上面一样
/**
* socketjs连接
* @throws URISyntaxException
* @throws InterruptedException
* @throws ExecutionException
* @throws IOException
*/
@Test
public void testScoketJs() throws URISyntaxException, InterruptedException, ExecutionException, IOException {
String jsUrl = "ws://localhost:18080/JeeSite/sockjs/websocket";
//把websocket包一层给socketjs即可
List<Transport> transports = Lists.newArrayList();
transports.add(new WebSocketTransport(new StandardWebSocketClient()));
//
SockJsClient jsClient = new SockJsClient(transports);
ListenableFuture<WebSocketSession> lf = jsClient.doHandshake(new WebSocketHandler() {
@Override
public boolean supportsPartialMessages() {
return false;
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
exception.printStackTrace();
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
System.out.println("Session :"+ session.getId());
System.out.println(message);
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("connection estabilshed Session :"+ session.getId());
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
System.out.println("connection closed Session :"+ session.getId());
}
}, jsUrl);
lf.addCallback(new ListenableFutureCallback<WebSocketSession>() {
@Override
public void onSuccess(WebSocketSession result) {
System.out.println("callback onSuccess:"+result.getId());
}
@Override
public void onFailure(Throwable ex) {
System.out.println("callback onFailure:"+ex.getMessage());
ex.printStackTrace();
}
});
WebSocketSession sess = lf.get();
TextMessage msg = new TextMessage("i'm donkey westom");
sess.sendMessage(msg);
sess.close();
}