時間:2023-07-06 11:33:01 | 來源:網(wǎng)站運營
時間:2023-07-06 11:33:01 來源:網(wǎng)站運營
用Java構(gòu)建一個簡單的WebSocket聊天室:<dependency> <groupId>com.github.UncleCatMySelf</groupId> <artifactId>InChat</artifactId> <version>1.1.0-alpha</version></dependency>
public class ToDataBaseServiceImpl implements InChatToDataBaseService{ @Override public Boolean writeMapToDB(InChatMessage message) { System.out.println(message.toString()); return true; }}
還有一個接口是對登錄的校驗(這里我們審理用戶登錄與校驗?zāi)K,所以直接返回true即可),還有一個是返回群聊的數(shù)組信息。public class verifyServiceImpl implements InChatVerifyService { @Override public boolean verifyToken(String token) { //登錄校驗 return true; } @Override public JSONArray getArrayByGroupId(String groupId) { //根據(jù)群聊id獲取對應(yīng)的群聊人員ID JSONArray jsonArray = JSONArray.parseArray("[/"1111/",/"2222/",/"3333/"]"); return jsonArray; }}
我們可以再詳細的說下,獲取群聊信息,是通過一個groupId來獲取對應(yīng)的用戶Id數(shù)組,我們可以自己做一個數(shù)據(jù)查詢。public class DemoApplication { public static void main(String[] args) { //配置InChat配置工廠 ConfigFactory.inChatToDataBaseService = new ToDataBaseServiceImpl(); ConfigFactory.inChatVerifyService = new verifyServiceImpl(); //默認啟動InChat InitServer initServer = new InitServer(new InitNetty()); initServer.open(); //獲取用戶值 WebSocketChannelService webSocketChannelService = new WebSocketChannelService(); //啟動新線程 new Thread(new Runnable() { @Override public void run() { //設(shè)定默認服務(wù)器發(fā)送值 Map<String,String> map = new HashMap<>(); map.put("server","服務(wù)器"); //獲取控制臺用戶想發(fā)送的用戶Token Scanner scanner = new Scanner(System.in); String token = scanner.nextLine(); //獲取用戶連接 Channel channel = (Channel) webSocketChannelService.getChannel(token); //調(diào)用接口發(fā)送 webSocketChannelService.sendFromServer(channel,map); } }).start(); }}
好了,以上已經(jīng)基本完成了我們的聊天室Demo了,是不是很簡單?。?br> INFO - 服務(wù)端啟動成功【192.168.1.121:8090】
這里的IP需要更換以下讀者啟動后的IP地址。 INFO - 服務(wù)端啟動成功【192.168.1.121:8090】DEBUG - -Dio.netty.buffer.bytebuf.checkAccessible: trueDEBUG - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@68ad4247 INFO - [DefaultWebSocketHandler.channelActive]/192.168.1.121:17330鏈接成功DEBUG - -Dio.netty.recycler.maxCapacityPerThread: 4096DEBUG - -Dio.netty.recycler.maxSharedCapacityFactor: 2DEBUG - -Dio.netty.recycler.linkCapacity: 16DEBUG - -Dio.netty.recycler.ratio: 8DEBUG - [id: 0xabb0dbad, L:/192.168.1.121:8090 - R:/192.168.1.121:17330] WebSocket version V13 server handshakeDEBUG - WebSocket version 13 server handshake key: JYErdeATDgbPmgK0mZ+IlQ==, response: YK9ZiJehNP+IwtlkpoVkPt94yWY=DEBUG - Decoding WebSocket Frame opCode=1DEBUG - Decoding WebSocket Frame length=31 INFO - [DefaultWebSocketHandler.textdoMessage.LOGIN]DEBUG - Encoding WebSocket Frame opCode=1 length=33DEBUG - Decoding WebSocket Frame opCode=1DEBUG - Decoding WebSocket Frame length=43 INFO - [DefaultWebSocketHandler.textdoMessage.SENDME]1111DEBUG - Encoding WebSocket Frame opCode=1 length=28 INFO - 【異步寫入數(shù)據(jù)】InChatMessage{time=Mon Dec 24 10:03:00 CST 2018, type='sendMe', value='', token='1111', groudId='null', online='null', onlineGroup=null, one='null'}DEBUG - Decoding WebSocket Frame opCode=1DEBUG - Decoding WebSocket Frame length=56 INFO - [DefaultWebSocketHandler.textdoMessage.SENDTO]1111DEBUG - Encoding WebSocket Frame opCode=1 length=41 INFO - 【異步寫入數(shù)據(jù)】InChatMessage{time=Mon Dec 24 10:03:01 CST 2018, type='sendTo', value='', token='1111', groudId='null', online='2222', onlineGroup=null, one='2222'}DEBUG - Decoding WebSocket Frame opCode=1DEBUG - Decoding WebSocket Frame length=60 INFO - [DefaultWebSocketHandler.textdoMessage.SENDGROUP]1111DEBUG - Encoding WebSocket Frame opCode=1 length=59 INFO - 【異步寫入數(shù)據(jù)】InChatMessage{time=Mon Dec 24 10:03:02 CST 2018, type='sendGroup', value='', token='1111', groudId='2', online='null', onlineGroup=[2222, 3333], one='null'}1111DEBUG - Encoding WebSocket Frame opCode=1 length=22
關(guān)鍵詞:簡單
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。