• 大小: 12.53MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-12
  • 语言: Java
  • 标签: spring  websocket  web聊天  

资源简介

利用websocket技术写群聊demo,包含maven项目源码,采用分别采用原生Java原生websocket,和spring websocket实现

资源截图

代码片段和文件信息

package zhang.sockjs;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.socket.*;
import zhang.util.MsgUtils;
import java.io.IOException;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Created by zhang on 2016/4/3.
 */
public class MsgSocketJ extends MsgUtils implements WebSocketHandler {

    static ConcurrentHashMap clients=new ConcurrentHashMap<>();

    static Logger logger = LoggerFactory.getLogger(MsgSocketJ.class);
    static ConcurrentHashMap localInfo=new ConcurrentHashMap<>();
    /**
     * 握手成功后执行的方法
     * @param webSocketSession
     * @throws Exception
     */
    @Override
    public void afterConnectionEstablished(WebSocketSession webSocketSession) throws Exception {
        logger.debug(“A new client connected!!!“);
        SessionBean sessionBean=new SessionBean();
        sessionBean.setSession(webSocketSession);
        localInfo.put(webSocketSession.getId()sessionBean);//记录客户端session
    }

    /**
     * 接收到消息后执行的方法
     * @param webSocketSession
     * @param webSocketMessage
     * @throws Exception
     */
    @Override
    public void handleMessage(WebSocketSession webSocketSession WebSocketMessage webSocketMessage) throws Exception {
        String message= (String) webSocketMessage.getPayload();
        if(message.startsWith(“$$username“)){
            localInfo.get(webSocketSession.getId()).setUsername(message.split(“=“)[1]);
            clients.put(webSocketSession.getId()webSocketSession);
            broadcast(nowTime()+“ 服务器消息“+ “:欢迎\““+localInfo.get(webSocketSession.getId()).getUsername()+“\“加入聊天;“truewebSocketSession);
            userList();
        }else{
            broadcast(nowTime()+“ “+localInfo.get(webSocketSession.getId()).getUsername()+“:“+messagefalsewebSocketSession);
        }
    }

    /**
     * 发生异常时执行的方法
     * @param webSocketSession
     * @param throwable
     * @throws Exception
     */
    @Override
    public void handleTransportError(WebSocketSession webSocketSession Throwable throwable) throws Exception {
        logger.error(“An error triggered!!!“);
        logger.error(throwable.getMessage()throwable);
        clients.remove(webSocketSession.getId());
        broadcast(nowTime()+“ 服务器消息“+“:\““+localInfo.get(webSocketSession.getId()).getUsername()+“\“离开聊天室;“truewebSocketSession);
        userList();
        localInfo.remove(webSocketSession.getId());
    }

    /**
     * 连接断开时执行的方法
     * @param webSocketSession
     * @param closeStatus
     * @throws Exception
     */
    @Override
    public void afterConnectionClosed(WebSocketSession webSocketSession CloseStatus closeStatus) throws Exception {
        logger.debug(“A client has disconnected!!!“);
        clients.remove(webSocketSession.getId());//移除离线的session
        broadc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        275  2016-03-26 21:37  web\.idea\artifacts\web_war.xml

     文件       2418  2016-04-10 10:54  web\.idea\artifacts\web_war_exploded.xml

     文件       1182  2016-04-03 17:20  web\.idea\compiler.xml

     文件         76  2016-03-26 21:36  web\.idea\copyright\profiles_settings.xml

     文件        241  2016-04-03 20:59  web\.idea\inspectionProfiles\profiles_settings.xml

     文件        669  2016-04-03 20:59  web\.idea\inspectionProfiles\Project_Default.xml

     文件        499  2016-04-03 16:57  web\.idea\libraries\Maven__aopalliance_aopalliance_1_0.xml

     文件        557  2016-04-03 16:57  web\.idea\libraries\Maven__commons_logging_commons_logging_1_1_3.xml

     文件        629  2016-04-04 09:53  web\.idea\libraries\Maven__com_fasterxml_jackson_core_jackson_annotations_2_3_0.xml

     文件        580  2016-04-04 09:52  web\.idea\libraries\Maven__com_fasterxml_jackson_core_jackson_core_2_3_1.xml

     文件        608  2016-04-04 09:53  web\.idea\libraries\Maven__com_fasterxml_jackson_core_jackson_databind_2_3_1.xml

     文件        571  2016-04-03 14:09  web\.idea\libraries\Maven__javax_websocket_javax_websocket_api_1_0.xml

     文件        440  2016-03-26 22:23  web\.idea\libraries\Maven__junit_junit_4_11.xml

     文件        454  2016-03-31 22:16  web\.idea\libraries\Maven__log4j_log4j_1_2_17.xml

     文件        517  2016-03-26 22:23  web\.idea\libraries\Maven__org_hamcrest_hamcrest_core_1_3.xml

     文件        498  2016-03-31 22:17  web\.idea\libraries\Maven__org_slf4j_slf4j_api_1_7_20.xml

     文件        526  2016-03-31 22:19  web\.idea\libraries\Maven__org_slf4j_slf4j_log4j12_1_7_20.xml

     文件        594  2016-04-03 16:57  web\.idea\libraries\Maven__org_springframework_spring_aop_4_1_2_RELEASE.xml

     文件        608  2016-04-03 16:57  web\.idea\libraries\Maven__org_springframework_spring_beans_4_1_2_RELEASE.xml

     文件        622  2016-04-03 16:57  web\.idea\libraries\Maven__org_springframework_spring_context_4_1_2_RELEASE.xml

     文件        601  2016-04-03 16:57  web\.idea\libraries\Maven__org_springframework_spring_core_4_1_2_RELEASE.xml

     文件        643  2016-04-03 16:57  web\.idea\libraries\Maven__org_springframework_spring_expression_4_1_2_RELEASE.xml

     文件        615  2016-04-03 16:57  web\.idea\libraries\Maven__org_springframework_spring_webmvc_4_1_2_RELEASE.xml

     文件        636  2016-04-03 17:17  web\.idea\libraries\Maven__org_springframework_spring_websocket_4_1_2_RELEASE.xml

     文件        594  2016-04-03 16:57  web\.idea\libraries\Maven__org_springframework_spring_web_4_1_2_RELEASE.xml

     文件       3172  2016-03-31 22:24  web\.idea\misc.xml

     文件        246  2016-04-10 10:54  web\.idea\modules.xml

     文件       1706  2016-04-04 08:26  web\.idea\rebel_project.xml

     文件       8792  2016-04-03 20:56  web\.idea\uiDesigner.xml

     文件        167  2016-03-26 21:37  web\.idea\vcs.xml

............此处省略158个文件信息

评论

共有 条评论