資源簡介
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服務器端
?*?注解的值將被用于監聽用戶連接的終端訪問URL地址客戶端可以通過這個URL來連接到WebSocket服務器端
?*?@ServerEndpoint?可以把當前類變成websocket服務類
?*/
@ServerEndpoint(“/websocket/{userno}“)
public?class?WebSocketTest?{
????//靜態變量,用來記錄當前在線連接數。應該把它設計成線程安全的。
????private?static?int?onlineCount?=?0;
????//concurrent包的線程安全Set,用來存放每個客戶端對應的MyWebSocket對象。若要實現服務端與單一客戶端通信的話,可以使用Map來存放,其中Key可以為用戶標識
????private?static?ConcurrentHashMap?webSocketSet?=?new?ConcurrentHashMap();
????//與某個客戶端的連接會話,需要通過它來給客戶端發送數據
????private?Session?WebSocketsession;
????//當前發消息的人員編號
????private?String?userno?=?““;
????/**
?????*?連接建立成功調用的方法
?????*
?????*?@param?session?可選的參數。session為與某個客戶端的連接會話,需要通過它來給客戶端發送數據
?????*/
????@OnOpen
????public?void?onOpen(@PathParam(value?=?“userno“)?String?param?Session?WebSocketsession?EndpointConfig?config)?{
????????System.out.println(param);
????????userno?=?param;//接收到發送消息的人員編號
????????this.WebSocketsession?=?WebSocketsession;
????????webSocketSet.put(param?this);//加入map中
????????addOnlineCount();???????????//在線數加1
????????System.out.println(“有新連接加入!當前在線人數為“?+?getOnlineCount());
????}
????/**
?????*?連接關閉調用的方法
?????*/
????@OnClose
????public?void?onClose()?{
????????if?(!userno.equals(““))?{
????????????webSocketSet.remove(userno);??//從set中刪除
????????????subOnlineCount();???????????//在線數減1
????????????System.out.println(“有一連接關閉!當前在線人數為“?+?getOnlineCount());
????????}
????}
????/**
?????*?收到客戶端消息后調用的方法
?????*
?????*?@param?message?客戶端發送過來的消息
?????*?@param?session?可選的參數
?????*/
????@SuppressWarnings(“unused“)
// @OnMessage
????public?void?onMessage(String?message?Session?session)?{
????????System.out.println(“來自客戶端的消息:“?+?message);
//????????session.get
????????//群發消息
????????if?(1?2)?{
????????????sendAll(message);
????????}?else?{
????????????//給指定的人發消息
????????????sendToUser(message);
????????}
????}
????/**
?????*?給指定的人發送消息
?????*?@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?+?“發來消息:“?+?“?
?“?+?sendMessage);
????????????}?else?{
????????????????System.out.println(“當前用戶不在線“);
????????????}
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}
????}
????/**
?????*?給所有人發消息
?????*?@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
- 上一篇:Spring-Aop所有jar
- 下一篇:java-Mysql學生成績管理系統
評論
共有 條評論