日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot中webSocket實現即時聊天

瀏覽:179日期:2023-03-13 18:26:09
即時聊天

這個使用了websocket,在springboot下使用很簡單。前端是小程序,這個就比較坑,小程序即時聊天上線需要域名并且使用wss協議,就是ws+ssl更加安全。但是要上線這還不夠,你必須為企業主體開發者。個人開發者即時聊天屬于社交、不在服務類目內,審核會不通過?。?!

功能 :我們的小程序是個二手交易小程序,即時聊天對于一個后臺服務器只是單核2g的來說有點抗不住。所以在雙方都在線的時候沒有存儲聊天消息,只是在單方不在線時存儲了離線消息。而且只能發三條離線消息。仿照了csdn的聊天。

使用:我們是點擊進入聊天之后才發起websocket,這就造成了一個問題,就是用戶退出到消息列表又重新點進入就會重新發送一個websocket請求。每次請求session都不一樣。而且微信限制一個用戶只能同時發起5個請求。一開始前端沒能退出聊天頁面就端開,就錯誤唉?。 V荒芎笈_去斷使用sessioin.close()會調用onClose()方法 這個session是你要斷的session。不過后來前端可以自己斷了就nice了!

效果:

SpringBoot中webSocket實現即時聊天

SpringBoot中webSocket實現即時聊天

數據庫設計:

對于展示消息聊天列表使用了一張表。last_context為對方發送的最后一條消息。只要有一方點擊了私信進入聊天頁面就會往表中插入兩條記錄。方便之后刪除聊天,畢竟一方刪除不能讓另一方也看不到信息

SpringBoot中webSocket實現即時聊天

對于消息詳細離線內容,則使用了另外一張表。

SpringBoot中webSocket實現即時聊天

后臺代碼:

package com.w.wx.controller.WebSocket;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.w.wx.domain.ChatMessage;import com.w.wx.service.ChatService;import com.w.wx.utils.ALToHMUtil;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;import javax.websocket.*;import javax.websocket.server.PathParam;import javax.websocket.server.ServerEndpoint;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.atomic.AtomicInteger;@Slf4j@ServerEndpoint('/wx/{fromOpenid}/{toOpenid}')@Componentpublic class WebSocketServer { public static WebSocketServer webSocketServer; @Autowired private ChatService chatService; @PostConstruct//此注解的方法在bean加載前執行 private void init() {webSocketServer = this;//初始化時將靜態化的interFaceInfoMapper進行了實例化webSocketServer.chatService = this.chatService; } //靜態變量,用來記錄當前在線連接數。應該把它設計成線程安全的。 private static AtomicInteger onlineNum = new AtomicInteger(); //concurrent包的線程安全HashMap,用來存放每個客戶端對應的WebSocketServer對象。 private static ConcurrentHashMap<String, Session> sessionPools = new ConcurrentHashMap<>(); //發送消息 public void sendMessage(Session session, ChatMessage message) throws IOException {if(session != null){ synchronized (session) {String s = JSONObject.toJSONString(message);System.out.println('52 發送數據:' + s);session.getBasicRemote().sendText(s); }} } //給指定用戶發送信息 public void sendInfo(String to_openid, ChatMessage message){Session session = sessionPools.get(to_openid);if(session == null){ webSocketServer.chatService.addDeInfo(message);}else{ try {sendMessage(session, message); }catch (Exception e){e.printStackTrace(); }} } // 群發消息 public void broadcast(ChatMessage message){ for (Session session: sessionPools.values()) { try {sendMessage(session, message); } catch(Exception e){e.printStackTrace();continue; }} } //收到客戶端信息后,根據接收人的username把消息推下去或者群發 // to=-1群發消息 @OnMessage public void onMessage(String message) throws IOException{ChatMessage msg=JSON.parseObject(message, ChatMessage.class);sessionPools.get(msg.getToOpenid());webSocketServer.chatService.addInfo(message);if (msg.getToOpenid().equals('-1')) { broadcast(msg);} else { sendInfo(msg.getToOpenid(),msg);} } //建立連接成功調用 @OnOpen public void onOpen(Session session, @PathParam(value = 'fromOpenid') String fromOpenid,@PathParam(value = 'toOpenid') String toOpenid) throws IOException {ArrayList<ChatMessage> list = webSocketServer.chatService.getAllNotRead(fromOpenid,toOpenid);if (!list.isEmpty()) { Iterator<ChatMessage> it = list.iterator(); while (it.hasNext()) {ChatMessage chatMessage = it.next();chatMessage.setContent(ALToHMUtil.toUnicode(chatMessage.getContent()));sendMessage(session, chatMessage);log.info('115 當前用戶接收離線消息' + chatMessage.toString()); }}sessionPools.put(fromOpenid, session);addOnlineCount();System.out.println('125 '+fromOpenid + '加入webSocket!當前人數為' + onlineNum); } //關閉連接時調用 @OnClose public void onClose(@PathParam(value = 'fromOpenid') String fromOpenid) throws IOException {Session session = sessionPools.get(fromOpenid);session.close();sessionPools.remove(fromOpenid);subOnlineCount();System.out.println(fromOpenid + '斷開webSocket連接!當前人數為' + onlineNum); } //錯誤時調用 @OnError public void onError(Session session, Throwable throwable){ // System.out.println('發生錯誤');throwable.printStackTrace(); } public static void addOnlineCount(){onlineNum.incrementAndGet(); } public static void subOnlineCount() {onlineNum.decrementAndGet(); }public static AtomicInteger getOnlineNumber() {return onlineNum; }public static ConcurrentHashMap<String, Session> getSessionPools() {return sessionPools; }}

到此這篇關于SpringBoot中webSocket實現即時聊天的文章就介紹到這了,更多相關SpringBoot中webSocket實現即時聊天內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜日本精品| 国产精品a久久久久| 成人精品亚洲| 成人自拍av| 国产字幕视频一区二区| 99在线|亚洲一区二区| 在线一区二区三区视频| 日本午夜精品一区二区三区电影 | 伊人影院久久| 久久av一区| 日韩精品福利一区二区三区| 国产欧美88| 欧美a在线观看| 国产成人1区| 免费不卡中文字幕在线| 欧美综合二区| 久久国产免费看| 国产高清不卡| 视频在线在亚洲| 精品三级在线观看视频| 99久久婷婷| 免费在线看一区| 欧美aa在线视频| 亚洲手机在线| 欧美专区一区| 伊人精品一区| 国产日产高清欧美一区二区三区 | 欧美黑人做爰爽爽爽| 视频二区不卡| 日韩欧美三区| 欧美成人基地 | 欧美中文日韩| 国产成人免费av一区二区午夜| 99国产精品一区二区| 蜜臀久久99精品久久久久久9| 国产精品视频一区二区三区四蜜臂| 国产在线观看www| 亚洲日韩视频| 四虎4545www国产精品| 日韩超碰人人爽人人做人人添| 中文在线а√在线8| 日韩精品亚洲专区在线观看| 成人羞羞视频在线看网址| 日韩精品成人在线观看| 日韩国产网站| 国产乱码精品一区二区三区四区 | 日韩午夜黄色| 欧美成人aaa| 蜜臀精品一区二区三区在线观看| 欧美xxxx中国| 亚洲精品日本| 欧美aa一级| 久久成人高清| 亚洲一级大片| 国产尤物精品| 国产一区2区| 欧美日韩中出| 亚洲欧美日韩国产一区二区| 日韩欧美一区免费| 日韩高清二区| 亚洲在线电影| 香蕉久久精品| 日韩中文欧美| 精品久久91| 国产精品一区三区在线观看| 亚洲最大av| 欧美女激情福利| 在线观看精品| 日韩成人a**站| 狂野欧美性猛交xxxx| 青青草伊人久久| 中文字幕视频精品一区二区三区| 亚洲高清av| 日韩在线短视频| 麻豆91在线播放| 国产日韩欧美一区在线| 日韩高清三区| 中文无码久久精品| 香蕉久久夜色精品国产| 91九色精品| 影院欧美亚洲| 亚洲免费播放| 五月综合激情| 一本一道久久a久久精品蜜桃| 久久精品国内一区二区三区水蜜桃| caoporn视频在线| 人人草在线视频| 999国产精品| 欧美影院三区| 亚洲v在线看| 999国产精品视频| 欧美/亚洲一区| 欧美成人久久| 好看的亚洲午夜视频在线| 亚洲欧美伊人| 99re国产精品| 中文字幕视频精品一区二区三区 | 亚洲一区成人| 蜜桃久久av一区| 免费成人av在线播放| 中文字幕日韩高清在线| 日本v片在线高清不卡在线观看| 亚洲精品大片| 一区二区电影在线观看| 中文字幕日韩欧美精品高清在线| 亚洲天堂免费| 日韩高清不卡一区| 国产精品一区二区中文字幕| 免费亚洲婷婷| 国内一区二区三区| 蜜桃av在线播放| 国产综合视频| 久热综合在线亚洲精品| 日韩av中文在线观看| 精品一区二区三区中文字幕视频| 色在线中文字幕| 亚洲少妇一区| 91九色综合| 精品欠久久久中文字幕加勒比| 午夜精品成人av| 日韩午夜高潮| 久久激情av| 久久男人天堂| 亚洲一区日本| 国产欧美日韩免费观看| 中国字幕a在线看韩国电影| 天堂资源在线亚洲| 亚洲伊人精品酒店| 精品女同一区二区三区在线观看| 99视频精品视频高清免费| 欧美精品黄色| 久久国内精品视频| 日韩欧美一区二区三区在线观看 | 欧美+日本+国产+在线a∨观看| 日韩精品一二三四| 国产精品宾馆| 激情久久久久久久| 青青伊人久久| 久久亚洲国产| 欧美一区91| 精品欧美一区二区三区在线观看| 丝袜美腿一区二区三区| 久久99蜜桃| 欧美在线影院| 老司机精品视频在线播放| 欧美一区二区三区高清视频| 欧美日韩中文| 中文字幕在线免费观看视频| 亚洲色图国产| 涩涩av在线| 日本国产一区| 极品裸体白嫩激情啪啪国产精品| 欧美在线看片| 欧美1区2区3区| 美女视频免费精品| 亚洲人www| 亚洲91精品| 国产精品99久久免费观看| 9色精品在线| 日本欧美国产| 91亚洲精品视频在线观看| 国产99精品| 欧美自拍一区| 亚洲一区二区三区高清不卡| yellow在线观看网址| 日韩精品中文字幕吗一区二区 | 久久久久99| 国产精久久久| 亚洲久久视频| 国产精品毛片在线看| 亚洲黄色免费看| 国产精品www.| 中文一区一区三区免费在线观| 日韩欧美自拍| 国产精品hd| 日本成人在线不卡视频| 日韩在线短视频| 精品少妇av| 久久国内精品自在自线400部| 久久不射网站| 亚洲性视频h| 在线天堂资源www在线污| 国产亚洲欧美日韩精品一区二区三区 | 日韩精品一区二区三区中文 | 黄色欧美日韩| av亚洲一区二区三区| 精品三级av在线导航| 久久国产生活片100| 日韩精品亚洲aⅴ在线影院| 综合欧美精品| 久久xxxx| 国产亚洲精品久久久久婷婷瑜伽| 欧美sm一区| 亚洲综合电影| 水蜜桃精品av一区二区| 麻豆国产精品一区二区三区| 日本成人手机在线| 在线精品一区二区| 伊人久久亚洲| 亚洲欧美久久精品|