com.hxh.websocket.handler.AndroidEndPoint.java Source code

Java tutorial

Introduction

Here is the source code for com.hxh.websocket.handler.AndroidEndPoint.java

Source

/*
 * 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);
        }
    }

}