資源簡介
websocket java 實現例子 tomcat 8 jdk 1.8

代碼片段和文件信息
package?tt;
import?java.io.IOException;
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;
//該注解用來指定一個URI,客戶端可以通過這個URI來連接到WebSocket。類似Servlet的注解mapping。無需在web.xml中配置。
@ServerEndpoint(“/websocket“)
public?class?MyWebSocket?{
????//靜態變量,用來記錄當前在線連接數。應該把它設計成線程安全的。
????private?static?int?onlineCount?=?0;?????
????//concurrent包的線程安全Set,用來存放每個客戶端對應的MyWebSocket對象。若要實現服務端與單一客戶端通信的話,可以使用Map來存放,其中Key可以為用戶標識
????private?static?CopyOnWriteArraySet?webSocketSet?=?new?CopyOnWriteArraySet();
?????
????//與某個客戶端的連接會話,需要通過它來給客戶端發送數據
????private?Session?session;
????
????/**
?????*?連接建立成功調用的方法
?????*?@param?session??可選的參數。session為與某個客戶端的連接會話,需要通過它來給客戶端發送數據
?????*/
????@OnOpen
????public?void?onOpen(Session?session){
????????this.session?=?session;
????????webSocketSet.add(this);?????//加入set中
????????addOnlineCount();???????????//在線數加1
????????System.out.println(“有新連接加入!當前在線人數為“?+?getOnlineCount()+session.getId());
????}
?????
????/**
?????*?連接關閉調用的方法
?????*/
????@OnClose
????public?void?onClose(){
????????webSocketSet.remove(this);??//從set中刪除
????????subOnlineCount();???????????//在線數減1?????
????????System.out.println(“有一連接關閉!當前在線人數為“?+?getOnlineCount());
????}
?????
????/**
?????*?收到客戶端消息后調用的方法
?????*?@param?message?客戶端發送過來的消息
?????*?@param?session?可選的參數
?????*/
????@OnMessage
????public?void?onMessage(String?message?Session?session)?{
????????System.out.println(“來自客戶端的消息:“?+?message);
?????????
????????//群發消息
????????for(MyWebSocket?item:?webSocketSet){??????????????
????????????try?{
????????????????item.sendMessage(message);
????????????}?catch?(IOException?e)?{
????????????????e.printStackTrace();
????????????????continue;
????????????}
????????}
????}
?????
????/**
?????*?發生錯誤時調用
?????*?@param?session
?????*?@param?error
?????*/
????@onerror
????public?void?onerror(Session?session?Throwable?error){
????????System.out.println(“發生錯誤“);
????????error.printStackTrace();
????}
?????
????/**
?????*?這個方法與上面幾個方法不一樣。沒有用注解,是根據自己需要添加的方法。
?????*?@param?message
?????*?@throws?IOException
?????*/
????public?void?sendMessage(String?message)?throws?IOException{
????????this.session.getBasicRemote().sendText(message);
????????//this.session.getAsyncRemote().sendText(message);
????}
?
????public?static?synchronized?int?getOnlineCount()?{
????????return?onlineCount;
????}
?
????public?static?synchronized?void?addOnlineCount()?{
????????MyWebSocket.onlineCount++;
????}
?????
????public?static?synchronized?void?subOnlineCount()?{
????????MyWebSocket.onlineCount--;
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????841??2016-04-26?16:18??testwebsocket\.classpath
?????文件??????????0??2016-05-06?14:17??testwebsocket\.me
?????文件???????5961??2016-05-13?17:47??testwebsocket\.me
?????文件????????438??2016-05-06?14:19??testwebsocket\.me
?????文件??????????1??2016-05-13?17:47??testwebsocket\.me
?????文件????????151??2016-05-13?17:47??testwebsocket\.me
?????文件??????????1??2016-05-13?17:47??testwebsocket\.me
?????文件????????185??2016-05-13?17:47??testwebsocket\.me
?????文件????????948??2016-05-13?17:47??testwebsocket\.me
?????文件????????371??2016-05-06?14:18??testwebsocket\.me
?????文件?????????58??2016-05-06?14:18??testwebsocket\.me
?????文件????????165??2016-05-06?14:18??testwebsocket\.me
?????文件???????2906??2016-05-06?14:18??testwebsocket\.me
?????文件????????565??2016-05-06?14:23??testwebsocket\.me
?????文件?????????58??2016-05-06?14:17??testwebsocket\.me
?????文件?????????73??2016-05-06?14:23??testwebsocket\.me
?????文件?????????62??2016-05-06?14:17??testwebsocket\.me
?????文件?????????97??2016-05-06?14:17??testwebsocket\.me
?????文件????????194??2016-05-06?14:23??testwebsocket\.me
?????文件?????????50??2016-05-06?14:18??testwebsocket\.me
?????文件????????195??2016-05-06?14:23??testwebsocket\.me
?????文件?????????99??2016-05-06?14:17??testwebsocket\.me
?????文件?????????69??2016-05-06?14:23??testwebsocket\.me
?????文件????????126??2016-05-06?14:23??testwebsocket\.me
?????文件?????????48??2016-05-06?14:17??testwebsocket\.me
?????文件????????371??2016-05-06?14:23??testwebsocket\.me
?????文件?????403558??2016-05-13?17:47??testwebsocket\.me
?????文件?????????20??2016-05-06?14:17??testwebsocket\.me
?????文件????????238??2016-05-06?14:17??testwebsocket\.me
?????文件?????????11??2016-05-06?14:17??testwebsocket\.me
............此處省略113個文件信息
評論
共有 條評論