天天看点

Spring4.3.3 WebSocket-STOMP协议集成 (1.1)-WebSocket协议通讯小栗子

           上一篇中说到: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控制台:

Spring4.3.3 WebSocket-STOMP协议集成 (1.1)-WebSocket协议通讯小栗子

            tomcat控制台:

Spring4.3.3 WebSocket-STOMP协议集成 (1.1)-WebSocket协议通讯小栗子

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

继续阅读