資源簡介
WebSocket+Tomcat8實現-Web版即時聊天室

代碼片段和文件信息
package?com.socket;
import?java.io.IOException;
import?java.util.HashMap;
import?java.util.Map;
import?javax.servlet.http.HttpSession;
import?javax.websocket.EndpointConfig;
import?javax.websocket.OnClose;
import?javax.websocket.onerror;
import?javax.websocket.OnMessage;
import?javax.websocket.OnOpen;
import?javax.websocket.Session;
import?javax.websocket.server.ServerEndpoint;
import?utils.MessageUtil;
@ServerEndpoint(value?=?“/websocket“configurator=GetHttpSessionConfigurator.class)
public?class?ChatServlet?{
private?static?final?Map?onlineUsers?=?new?HashMap();
private?static?int?onlineCount?=?0;
private?HttpSession?httpSession;
private?Session?session;
@OnOpen
public?void?onOpen(Session?sessionEndpointConfig?config){
this.session?=?session;
this.httpSession?=?(HttpSession)?config.getUserProperties().get(HttpSession.class.getName());
if(httpSession.getAttribute(“user“)?!=?null){
onlineUsers.put(httpSession?this);
}
String?names?=?getNames();
String?content?=?MessageUtil.sendContent(MessageUtil.USERnames);
broadcastAll(content);
addOnlineCount();???????????//在線數加1
System.out.println(“有新連接加入!當前在線人數為“?+?onlineUsers.size());
}
@OnClose
public?void?onClose(){
onlineUsers.remove(this);??//從set中刪除
subOnlineCount();???????????//在線數減1???
System.out.println(“有一連接關閉!當前在線人數為“?+?getOnlineCount());
}
@OnMessage
public?void?onMessage(String?message?Session?session)?throws?IOException?{
HashMap?messageMap?=?MessageUtil.getMessage(message);????//處理消息類
String?fromName?=?messageMap.get(“fromName“);????//消息來自人?的userId
String?toName?=?messageMap.get(“toName“);???????//消息發往人的?userId
String?mapContent?=?messageMap.get(“content“);
if(toName.isEmpty()){
sendOffLine(fromNametoName);
return;
}
if(“all“.equals(toName)){
String?msgContentString?=?fromName?+?“對所有人說:?“?+?mapContent;???//構造發送的消息
String?content?=?MessageUtil.sendContent(MessageUtil.MESSAGEmsgContentString);
broadcastAll(content);
}else{
try?{
String?content?=?MessageUtil.sendContent(MessageUtil.MESSAGEmapContent);
singleChat(fromNametoNamecontent);
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
System.out.println(“來自客戶端的消息:“?+?message);
broadcastAll(message);
}
private?void?singleChat(String?fromName?String?toName?String?mapContent)?throws?IOException?{
String?msgContentString?=?fromName?+?“對“?+?toName?+?“說:?“?+?mapContent;
String?contentTemp?=?MessageUtil.sendContent(MessageUtil.MESSAGEmsgContentString);
boolean?isExit?=?false;
for?(HttpSession?key?:?onlineUsers.keySet())?{
if(key.getAttribute(“user“).equals(toName)){
isExit?=?true;
}
}
if(isExit){
for?(HttpSession?key?:?onlineUsers.keySet())?{
if(key.getAttribute(“user“).equals(fromName)?||?key.getAttribute(“user“).equals(toName))
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????834??2015-10-13?08:32??WebSocket8\.classpath
?????文件???????1043??2015-10-13?08:32??WebSocket8\.project
?????文件????????503??2015-10-13?08:32??WebSocket8\.settings\.jsdtscope
?????文件????????364??2015-10-13?08:32??WebSocket8\.settings\org.eclipse.jdt.core.prefs
?????文件????????482??2015-10-13?08:32??WebSocket8\.settings\org.eclipse.wst.common.component
?????文件????????345??2015-10-13?08:32??WebSocket8\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件?????????49??2015-10-13?08:32??WebSocket8\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件??????????6??2015-10-13?08:32??WebSocket8\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????文件???????6329??2015-10-13?11:35??WebSocket8\build\classes\com\socket\ChatServlet.class
?????文件???????1288??2015-10-13?10:38??WebSocket8\build\classes\com\socket\GetHttpSessionConfigurator.class
?????文件???????1077??2015-10-13?10:38??WebSocket8\build\classes\utils\HTMLFilter.class
?????文件???????1706??2015-10-13?10:44??WebSocket8\build\classes\utils\MessageUtil.class
?????文件???????4757??2015-10-13?11:35??WebSocket8\src\com\socket\ChatServlet.java
?????文件????????582??2015-10-13?08:32??WebSocket8\src\com\socket\GetHttpSessionConfigurator.java
?????文件???????2148??2015-10-13?08:32??WebSocket8\src\utils\HTMLFilter.java
?????文件????????937??2015-10-13?10:43??WebSocket8\src\utils\MessageUtil.java
?????文件???????2617??2015-10-13?11:55??WebSocket8\WebContent\chat.jsp
?????文件??????94845??2015-10-07?10:09??WebSocket8\WebContent\js\jquery-1.7.2.min.js
?????文件????????491??2015-10-09?14:43??WebSocket8\WebContent\login.jsp
?????文件?????????39??2015-10-13?08:32??WebSocket8\WebContent\me
?????文件?????210856??2015-10-13?10:38??WebSocket8\WebContent\WEB-INF\lib\gson-2.3.1.jar
?????文件????????243??2015-10-07?08:48??WebSocket8\WebContent\WEB-INF\web.xm
?????目錄??????????0??2015-10-13?10:38??WebSocket8\build\classes\com\socket
?????目錄??????????0??2015-10-13?10:38??WebSocket8\build\classes\com
?????目錄??????????0??2015-10-13?10:38??WebSocket8\build\classes\utils
?????目錄??????????0??2015-10-13?08:53??WebSocket8\src\com\socket
?????目錄??????????0??2015-10-13?10:38??WebSocket8\WebContent\WEB-INF\lib
?????目錄??????????0??2015-10-13?10:38??WebSocket8\build\classes
?????目錄??????????0??2015-10-13?08:32??WebSocket8\src\com
?????目錄??????????0??2015-10-13?08:32??WebSocket8\src\utils
............此處省略11個文件信息
- 上一篇:中綴表達式輸入、轉換與計算前綴和后綴內附流程圖
- 下一篇:QT網絡調試助手
評論
共有 條評論