資源簡介
websocket 即時通訊案例 ,一對一聊天,多人聊天 java 版本

代碼片段和文件信息
package?com.aa.websocket;
import?javax.websocket.*;
import?javax.websocket.server.PathParam;
import?javax.websocket.server.ServerEndpoint;
import?java.io.IOException;
import?java.text.DateFormat;
import?java.text.SimpleDateFormat;
import?java.util.Date;
import?java.util.concurrent.ConcurrentHashMap;
/**
?*?@ServerEndpoint?注解是一個類層次的注解,它的功能主要是將目前的類定義成一個websocket服務(wù)器端
?*?注解的值將被用于監(jiān)聽用戶連接的終端訪問URL地址客戶端可以通過這個URL來連接到WebSocket服務(wù)器端
?*?@ServerEndpoint?可以把當(dāng)前類變成websocket服務(wù)類
?*/
@ServerEndpoint(“/websocket/{userno}“)
public?class?WebSocketTest?{
????//靜態(tài)變量,用來記錄當(dāng)前在線連接數(shù)。應(yīng)該把它設(shè)計成線程安全的。
????private?static?int?onlineCount?=?0;
????//concurrent包的線程安全Set,用來存放每個客戶端對應(yīng)的MyWebSocket對象。若要實現(xiàn)服務(wù)端與單一客戶端通信的話,可以使用Map來存放,其中Key可以為用戶標(biāo)識
????private?static?ConcurrentHashMap?webSocketSet?=?new?ConcurrentHashMap();
????//與某個客戶端的連接會話,需要通過它來給客戶端發(fā)送數(shù)據(jù)
????private?Session?WebSocketsession;
????//當(dāng)前發(fā)消息的人員編號
????private?String?userno?=?““;
????/**
?????*?連接建立成功調(diào)用的方法
?????*
?????*?@param?session?可選的參數(shù)。session為與某個客戶端的連接會話,需要通過它來給客戶端發(fā)送數(shù)據(jù)
?????*/
????@OnOpen
????public?void?onOpen(@PathParam(value?=?“userno“)?String?param?Session?WebSocketsession?EndpointConfig?config)?{
????????System.out.println(param);
????????userno?=?param;//接收到發(fā)送消息的人員編號
????????this.WebSocketsession?=?WebSocketsession;
????????webSocketSet.put(param?this);//加入map中
????????addOnlineCount();???????????//在線數(shù)加1
????????System.out.println(“有新連接加入!當(dāng)前在線人數(shù)為“?+?getOnlineCount());
????}
????/**
?????*?連接關(guān)閉調(diào)用的方法
?????*/
????@OnClose
????public?void?onClose()?{
????????if?(!userno.equals(““))?{
????????????webSocketSet.remove(userno);??//從set中刪除
????????????subOnlineCount();???????????//在線數(shù)減1
????????????System.out.println(“有一連接關(guān)閉!當(dāng)前在線人數(shù)為“?+?getOnlineCount());
????????}
????}
????/**
?????*?收到客戶端消息后調(diào)用的方法
?????*
?????*?@param?message?客戶端發(fā)送過來的消息
?????*?@param?session?可選的參數(shù)
?????*/
????@SuppressWarnings(“unused“)
// @OnMessage
????public?void?onMessage(String?message?Session?session)?{
????????System.out.println(“來自客戶端的消息:“?+?message);
//????????session.get
????????//群發(fā)消息
????????if?(1?2)?{
????????????sendAll(message);
????????}?else?{
????????????//給指定的人發(fā)消息
????????????sendToUser(message);
????????}
????}
????/**
?????*?給指定的人發(fā)送消息
?????*?@param?message
?????*/
????@OnMessage
????public?void?sendToUser(String?message)?{
????????String?sendUserno?=?message.split(“[|]“)[1];
????????String?sendMessage?=?message.split(“[|]“)[0];
????????String?now?=?getNowTime();
????????try?{
????????????if?(webSocketSet.get(sendUserno)?!=?null)?{
????????????????webSocketSet.get(sendUserno).sendMessage(now?+?“用戶“?+?userno?+?“發(fā)來消息:“?+?“?
?“?+?sendMessage);
????????????}?else?{
????????????????System.out.println(“當(dāng)前用戶不在線“);
????????????}
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}
????}
????/**
?????*?給所有人發(fā)消息
?????*?@param?message
?????*/
????private?void?sendAll(String
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5655??2018-03-01?15:06??WebSocket\src\com\aa\websocket\WebSocketTest.java
?????文件???????3425??2018-03-01?14:22??WebSocket\WebContent\index.jsp
?????文件???????3424??2018-03-01?14:22??WebSocket\WebContent\index2.jsp
?????文件???????3424??2018-03-01?14:47??WebSocket\WebContent\index3.jsp
?????文件?????????39??2018-03-01?13:52??WebSocket\WebContent\me
?????文件????1930692??2018-02-03?11:54??WebSocket\WebContent\WEB-INF\lib\javaee-api-7.0.jar
?????文件????????641??2018-03-01?13:52??WebSocket\WebContent\WEB-INF\web.xm
?????目錄??????????0??2019-03-07?11:03??WebSocket\src\com\aa\websocket
?????目錄??????????0??2019-03-07?11:03??WebSocket\src\com\aa
?????目錄??????????0??2019-03-07?11:03??WebSocket\WebContent\WEB-INF\lib
?????目錄??????????0??2019-03-07?11:03??WebSocket\src\com
?????目錄??????????0??2019-03-07?11:03??WebSocket\WebContent\me
?????目錄??????????0??2019-03-07?11:03??WebSocket\WebContent\WEB-INF
?????目錄??????????0??2019-03-07?11:03??WebSocket\src
?????目錄??????????0??2019-03-07?11:03??WebSocket\WebContent
?????目錄??????????0??2019-03-07?11:03??WebSocket
-----------?---------??----------?-----??----
??????????????1947300????????????????????16
評論
共有 條評論