資源簡介
此文件為websocket實現的聊天室,后臺源碼為java編寫,下載解壓部署好即可使用

代碼片段和文件信息
import?java.text.SimpleDateFormat;
import?java.util.Date;
import?java.util.Set;
import?java.util.concurrent.CopyOnWriteArraySet;
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?net.sf.json.JSONobject;
/**
?*?聊天服務器類
?*?@author?朱宏亮
?*
?*@ServerEndpoint?注解是一個類層次的注解,它的功能主要是將目前的類定義成一個websocket服務器端。
?*注解的值將被用于監聽用戶連接的終端訪問URL地址。
?*
?*onOpen?和?onClose?方法分別被?@OnOpen?和?@OnClose?所注解。
?*這兩個注解的作用不言自明:他們定義了當一個新用戶連接和斷開的時候所調用的方法。
?*
?*onMessage?方法被?@OnMessage?所注解。
?*這個注解定義了當服務器接收到客戶端發送的消息時所調用的方法。
?*注意:這個方法可能包含一個javax.websocket.Session可選參數(在我們的例子里就是session參數)。
?*如果有這個參數,容器將會把當前發送消息客戶端的連接Session注入進去。
?*
?*/
@ServerEndpoint(“/websocket“)
public?class?ChatServer?{
private?static?final?SimpleDateFormat?DATE_FORMAT?=?new?SimpleDateFormat(“yyyy-MM-dd?HH:mm“); //?日期格式化
static?Set?users?=??new?CopyOnWriteArraySet();//把所有的session存在這個static集合里面
@OnOpen
public?void?open(Session?session)?{
//?添加初始化操作
users.add(session);
System.out.println(“當前用戶數量:“+users.size());
}
/**
?*?接受客戶端的消息,并把消息發送給所有連接的會話
?*?@param?message?客戶端發來的消息
?*?@param?session?客戶端的會話
?*/
@OnMessage
public?void?getMessage(String?message?Session?session)?{
//打印message
System.out.println(“當前用戶發送信息:“+message);
System.out.println(“當前用戶sessionID:“+session.getId());
//?把客戶端的消息解析為JSON對象
JSONobject?jsonobject?=?JSONobject.fromobject(message);
//?在消息中添加發送日期
jsonobject.put(“date“?DATE_FORMAT.format(new?Date()));
//?把消息發送給所有連接的會話
int?i?=?0?;
System.out.println(“當前用戶數量:“+users.size());
for?(Session?openSession?:?users)?{
//?添加本條消息是否為當前會話本身發的標志
jsonobject.put(“isSelf“?openSession.equals(session));
//?發送JSON格式的消息
openSession.getAsyncRemote().sendText(jsonobject.toString());
}
}
@OnClose
public?void?close(Session?session)?{
//?添加關閉會話時的操作
users.remove(session);
System.out.println(“用戶已斷開ID:“+session.getId());
}
@onerror
public?void?error(Throwable?t?Session?session)?{
//?添加處理錯誤的操作
try{
System.out.println(“客戶端斷開連接“);
//close(session);
}catch(Exception?a){
a.printStackTrace();
}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......???????817??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.classpath
????.......?????????8??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.gitignore
????.......??????1022??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.project
????.......???????555??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.settings\.jsdtscope
????.......???????357??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.settings\org.eclipse.jdt.core.prefs
????.......???????503??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.settings\org.eclipse.wst.common.component
????.......???????335??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.settings\org.eclipse.wst.common.project.facet.core.xm
????.......????????49??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.settings\org.eclipse.wst.jsdt.ui.superType.container
????.......?????????6??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\.settings\org.eclipse.wst.jsdt.ui.superType.name
????.......??????3454??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\build\classes\ChatServer.class
????.......????????29??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\README.md
????.......??????3021??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\src\ChatServer.java
????.......??????3049??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\css\admin.css
????.......????304221??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\css\amazeui.css
????.......????305083??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\css\amazeui.flat.css
????.......????233027??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\css\amazeui.flat.min.css
????.......????232205??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\css\amazeui.min.css
????.......????????23??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\css\app.css
????.......??????7215??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\app-icon72x72@2x.png
????.......??????3594??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\admin-chrome.png
????.......??????4030??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\admin-firefox.png
????.......??????3999??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\admin-ie.png
????.......??????3749??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\admin-opera.png
????.......??????4055??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\admin-safari.png
????.......??????2702??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\adminPage.png
????.......??????2581??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\blogPage.png
????.......??????4520??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\landing.png
????.......??????2499??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\landingPage.png
????.......??????2081??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\loginPage.png
????.......??????2365??2016-12-30?15:33??HTML5_WebSocket_JAVA8_Chat\WebContent\assets\i\examples\sidebarPage.png
............此處省略159個文件信息
評論
共有 條評論