Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.hxh.websocket.handler; import com.hxh.websocket.beans.JsonMessage; import com.fasterxml.jackson.databind.ObjectMapper; import com.hxh.websocket.service.UserOnlineService; import com.hxh.utils.JacksonMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.TextWebSocketHandler; /** * ??WebSocket???? * @author */ public class AndroidEndPoint extends TextWebSocketHandler { @Autowired UserOnlineService service; @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { System.out.println("" + getClientAddress(session) + "websocket?:" + status.getCode() + "" + status.getReason()); super.afterConnectionClosed(session, status); } @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { System.out.println("?" + getClientAddress(session) + "websocket"); super.handleTransportError(session, exception); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { ObjectMapper om = JacksonMapper.getInstance(); JsonMessage jm = om.readValue(message.getPayload(), JsonMessage.class); int command = jm.getC(); if (command == JsonMessage.USER_LOGIN) { JsonMessage<String[]> msg = jm; doUserLogin(session, msg.getD()); } else if (command == JsonMessage.USER_LOGOUT) { JsonMessage<String> msg = jm; doUserLogout(session, msg.getD()); } super.handleTextMessage(session, message); } @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { String clientAddress = getClientAddress(session); System.out.println("" + clientAddress + "websocket"); super.afterConnectionEstablished(session); } private String getClientAddress(WebSocketSession session) { String s = session.getRemoteAddress().getHostName(); int cp = session.getRemoteAddress().getPort(); return s + ":" + cp; } private void doUserLogin(WebSocketSession session, String[] upp) { //String clientAddress = getClientAddress(session); if (upp != null && upp.length == 5) { String clientIp = session.getRemoteAddress().getHostName(); service.registerUser(upp[0], upp[1], clientIp, upp[2], upp[3], upp[4], session); } } private void doUserLogout(WebSocketSession session, String d) { if (d != null && !d.equals("")) { service.removeUser(d); } } }