ChatMessageHandler.java

package com.alibaba.fastjson2.example.springtest.config;

import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Created by jackiechan on 2018/2/5/������4:11
 * ������������������������
 */
public class ChatMessageHandler
        extends TextWebSocketHandler {
    //���������������������������������������������������
    private static final Map<String, WebSocketSession> allClients;

    static {
        //���������������
        allClients = new ConcurrentHashMap();
    }

    /**
     * ���������������������������������������������������������,������������������������������������
     */
    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
    }

    /**
     * ���������������������������
     *
     * @param userName
     * @param message
     */
    public void sendMessageToUser(String userName, TextMessage message) {
        //���������������������������������������������
        WebSocketSession webSocketSession = allClients.get(userName);

        //������������������,������������,������������������������������������,���������������������������������
        if (webSocketSession != null && webSocketSession.isOpen()) {
            try {
                //������������
                webSocketSession.sendMessage(message);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * ���������������������������������,������������������������������
     *
     * @param message
     */
    public void sendMessageToUsers(TextMessage message) {
        //���������������������
        for (Map.Entry<String, WebSocketSession> webSocketSessionEntry : allClients.entrySet()) {
            //������������������
            WebSocketSession session = webSocketSessionEntry.getValue();
            if (session != null && session.isOpen()) {
                try {
                    session.sendMessage(message);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Override
    public boolean supportsPartialMessages() {
        return false;
    }
}