資源簡介
使用SSM框架整合websocket實現即時通訊功能,可以實現私聊和群聊,里面附帶mysql數據庫腳本

代碼片段和文件信息
package?com.jyp.chatroom.Controller;
import?com.alibaba.fastjson.JSON;
import?com.alibaba.fastjson.JSONobject;
import?javax.servlet.http.HttpSession;
import?javax.websocket.*;
import?javax.websocket.server.ServerEndpoint;
import?java.io.IOException;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.concurrent.CopyOnWriteArraySet;
/**
?*?websocket服務
?*?@author??:??Amayadream
?*?@time???:??2016.01.08?09:50
?*/
@ServerEndpoint(value?=?“/chatServer“?configurator?=?HttpSessionConfigurator.class)
public?class?ChatServer?{
????private?static?int?onlineCount?=?0;?//靜態變量,用來記錄當前在線連接數。應該把它設計成線程安全的。
????private?static?CopyOnWriteArraySet?webSocketSet?=?new?CopyOnWriteArraySet();
????private?Session?session;????//與某個客戶端的連接會話,需要通過它來給客戶端發送數據
????private?String?username;??????//用戶名
????private?HttpSession?httpSession;????//request的session
????private?static?List?list?=?new?ArrayList<>();???//在線列表記錄用戶名稱
????private?static?Map?routetab?=?new?HashMap<>();??//用戶名和websocket的session綁定的路由表
????/**
?????*?連接建立成功調用的方法
?????*?@param?session??可選的參數。session為與某個客戶端的連接會話,需要通過它來給客戶端發送數據
?????*/
????@OnOpen
????public?void?onOpen(Session?session?EndpointConfig?config){
????????this.session?=?session;
????????webSocketSet.add(this);?????//加入set中
????????addOnlineCount();???????????//在線數加1;
????????this.httpSession?=?(HttpSession)?config.getUserProperties().get(HttpSession.class.getName());
????????this.username=(String)?httpSession.getAttribute(“username“);????//獲取當前用戶
????????list.add(username);???????????//將用戶名加入在線列表
????????routetab.put(username?session);???//將用戶名和session綁定到路由表
????????String?message?=?getMessage(“[“?+?username?+?“]加入聊天室當前在線人數為“+getOnlineCount()+“位“?“notice“??list);
????????broadcast(message);?????//廣播
????}
????/**
?????*?連接關閉調用的方法
?????*/
????@OnClose
????public?void?onClose(){
????????webSocketSet.remove(this);??//從set中刪除
????????subOnlineCount();???????????//在線數減1
????????list.remove(username);????????//從在線列表移除這個用戶
????????routetab.remove(username);
????????String?message?=?getMessage(“[“?+?username?+“]離開了聊天室當前在線人數為“+getOnlineCount()+“位“?“notice“?list);
????????broadcast(message);?????????//廣播
????}
????/**
?????*?接收客戶端的message判斷是否有接收人而選擇進行廣播還是指定發送
?????*?“massage“?:?{
?????*?“from“?:?“xxx“
?????*?“to“?:?“xxx“
?????*?“content“?:?“xxx“
?????*?“time“?:?“xxxx.xx.xx“
?????*??}
?????*?“type“?:?{notice|message|image}
?????*?“list“?:?{[xx][xx][xx]}
?????*?@param?_message?客戶端發送過來的消息
?????*/
????@OnMessage
????public?void?onMessage(String?_message)?{
????????JSONobject?chat?=?JSON.parseobject(_message);
????????JSONobject?message?=?JSON.parseobject(chat.get(“message“).toString());
????????if(message.get(“to“)?==?null?||?message.get(“to“).equals(““)){??????//如果to為空則廣播;如果不為空則對指定的用戶發送消息
????????????broadcast(_message);
????????}else{
????????????String?[]?userlist?=?message.get(“to“).toString().split(““);
????????????singleSend(_message?(Session)?rou
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-03-06?07:04??Chatroom-SSM-master\
?????目錄???????????0??2017-03-06?07:04??Chatroom-SSM-master\.idea\
?????目錄???????????0??2017-03-06?07:04??Chatroom-SSM-master\.idea\artifacts\
?????文件?????????286??2017-03-06?07:04??Chatroom-SSM-master\.idea\artifacts\ChatroomDemo_war.xm
?????文件????????4971??2017-03-06?07:04??Chatroom-SSM-master\.idea\artifacts\ChatroomDemo_war_exploded.xm
?????文件????????1200??2017-03-06?07:04??Chatroom-SSM-master\.idea\compiler.xm
?????目錄???????????0??2017-03-06?07:04??Chatroom-SSM-master\.idea\copyright\
?????文件??????????74??2017-03-06?07:04??Chatroom-SSM-master\.idea\copyright\profiles_settings.xm
?????文件????????1663??2017-03-06?07:04??Chatroom-SSM-master\.idea\dataSources.ids
?????文件?????????896??2017-03-06?07:04??Chatroom-SSM-master\.idea\dataSources.xm
?????目錄???????????0??2017-03-06?07:04??Chatroom-SSM-master\.idea\dictionaries\
?????文件?????????144??2017-03-06?07:04??Chatroom-SSM-master\.idea\dictionaries\asus.xm
?????文件?????????172??2017-03-06?07:04??Chatroom-SSM-master\.idea\encodings.xm
?????目錄???????????0??2017-03-06?07:04??Chatroom-SSM-master\.idea\inspectionProfiles\
?????文件?????????785??2017-03-06?07:04??Chatroom-SSM-master\.idea\inspectionProfiles\Project_Default.xm
?????文件?????????235??2017-03-06?07:04??Chatroom-SSM-master\.idea\inspectionProfiles\profiles_settings.xm
?????目錄???????????0??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\
?????文件?????????514??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__aopalliance_aopalliance_1_0.xm
?????文件?????????465??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__c3p0_c3p0_0_9_1_2.xm
?????文件?????????568??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__ch_qos_logback_logback_classic_1_1_1.xm
?????文件?????????547??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__ch_qos_logback_logback_core_1_1_1.xm
?????文件?????????507??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_alibaba_fastjson_1_2_7.xm
?????文件?????????605??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_dyuproject_protostuff_protostuff_api_1_0_8.xm
?????文件?????????696??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_dyuproject_protostuff_protostuff_collectionschema_1_0_8.xm
?????文件?????????612??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_dyuproject_protostuff_protostuff_core_1_0_8.xm
?????文件?????????633??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_dyuproject_protostuff_protostuff_runtime_1_0_8.xm
?????文件?????????644??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_fasterxm
?????文件?????????595??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_fasterxm
?????文件?????????623??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__com_fasterxm
?????文件?????????602??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__commons_collections_commons_collections_3_2.xm
?????文件?????????558??2017-03-06?07:04??Chatroom-SSM-master\.idea\libraries\Maven__commons_logging_commons_logging_1_2.xm
............此處省略85個文件信息
評論
共有 條評論