国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot 整合 Websocket 通信demo (附瀏覽器聊天窗口)

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot 整合 Websocket 通信demo (附瀏覽器聊天窗口)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【男性深夜解壓神器】


https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.1d293d0dZgIXMJ&ft=t&id=742087626933

1. 依賴
<!-- SpringBoot WebSocket -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
2. 自動(dòng)注冊(cè)配置類
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

@Configuration
public class WebSocketConfig {

    /**
     * ServerEndpointExporter 作用
     *
     * 這個(gè)Bean會(huì)自動(dòng)注冊(cè)使用@ServerEndpoint注解聲明的websocket endpoint
     *
     * @return
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
 
3. WebSocket服務(wù)類
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;


/**
 * postman訪問: ws://localhost:8080/ws/{userId}
 * 瀏覽器訪問:  http://localhost:8080/ws
 */
@Component
@ServerEndpoint("/ws/{userId}")
public class WebSocketServer {

    private static int onlineCount = 0;
    private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<>();
    private Session session;
    private String userId = "";

    @OnOpen
    public void onOpen(Session session, @PathParam("userId") String userId) {
        this.session = session;
        webSocketSet.add(this);     //加入set中
        addOnlineCount();           //在線數(shù)加1
        this.userId = userId;
        sendMessage(userId + "用戶" + ", 連接成功 !");

        System.out.println("【websocket】 " + userId + "用戶" + "已連接!當(dāng)前在線人數(shù)為" + getOnlineCount());
    }

    @OnClose
    public void onClose() {
        webSocketSet.remove(this);  //從set中刪除
        subOnlineCount();           //在線數(shù)減1

        System.out.println("【websocket】 " + userId +  "用戶" +  "已關(guān)閉!當(dāng)前在線人數(shù)為" + getOnlineCount());
    }

    @OnMessage
    public void onMessage(String message, Session session) {

        if(message.startsWith("target-")){
            int index = message.indexOf(":");
            String userId = message.substring(7,index);
            sendInfo(message.substring(index + 1), userId);
            return;
        }

        this.session = session;
        sendMessage("【websocket】 服務(wù)端收到來自窗口" + userId + "發(fā)送的消息:" + message);

    }

    @OnError
    public void onError(Session session, Throwable error) {
        this.session = session;
        error.printStackTrace();
    }

    private void sendMessage(String message) {
        try {
            this.session.getBasicRemote().sendText(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 群發(fā)消息
    /**
     * 群發(fā)自定義消息
     */
    public static void sendInfo(String message, @PathParam("userId") String userId) {
        System.out.println("【websocket】 推送消息給" + userId +  "用戶" + ",推送內(nèi)容:" + message);

        for (WebSocketServer item : webSocketSet) {
            //這里可以設(shè)定只推送給這個(gè)userId的,為null則全部推送
            if (userId == null) {
//                    item.sendMessage(message);
            } else if (item.userId.equals(userId)) {
                item.sendMessage(message);
            }
        }
    }


    public static synchronized int getOnlineCount() {
        return onlineCount;
    }

    public static synchronized void addOnlineCount() {
        WebSocketServer.onlineCount++;
    }

    public static synchronized void subOnlineCount() {
        WebSocketServer.onlineCount--;
    }

    public static CopyOnWriteArraySet<WebSocketServer> getWebSocketSet() {
        return webSocketSet;
    }
}
4. 模擬通信

SpringBoot 整合 Websocket 通信demo (附瀏覽器聊天窗口),webSocket,spring boot,websocket文章來源地址http://www.zghlxwxcb.cn/news/detail-712534.html

【websocket】 2015用戶已連接!當(dāng)前在線人數(shù)為1
【websocket】 7349用戶已連接!當(dāng)前在線人數(shù)為2
【websocket】 推送消息給7349用戶,推送內(nèi)容:你好, 我是2015用戶, 很高興認(rèn)識(shí)你 !
【websocket】 推送消息給2015用戶,推送內(nèi)容:你好, 我是7349用戶, 我也很高興認(rèn)識(shí)你 !
?
訪問:http://localhost:8080/ws

可以打開多個(gè)

開始連接,一個(gè)客戶端給另一個(gè)客戶端發(fā)消息。

可以服務(wù)端推送消息給所有連接的客戶端

POST:http://localhost:8080/push

任意內(nèi)容

?
5. 需要完整代碼的可私信我

到了這里,關(guān)于SpringBoot 整合 Websocket 通信demo (附瀏覽器聊天窗口)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一.Winform使用Webview2(Edge瀏覽器核心) 創(chuàng)建demo(Demo1)實(shí)現(xiàn)回車導(dǎo)航到指定地址

    一.Winform使用Webview2(Edge瀏覽器核心) 創(chuàng)建demo(Demo1)實(shí)現(xiàn)回車導(dǎo)航到指定地址

    往期相關(guān)文章目錄 專欄目錄 WinForms 應(yīng)用中的 WebView2 入門 按照官方文檔一路操作,可以自行百度或者查看WinForms 應(yīng)用中的 WebView2 入門。為了避坑,本人安裝的時(shí)vs2022(visual studio 以下簡(jiǎn)稱vs) 打開vs(visual studio 以下簡(jiǎn)稱vs) 點(diǎn)擊 創(chuàng)建新項(xiàng)目 ,選擇 C# Windows 窗體應(yīng)用 (.NET Framework

    2024年02月21日
    瀏覽(27)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】瀏覽器的通信能力

    【計(jì)算機(jī)網(wǎng)絡(luò)】瀏覽器的通信能力

    瀏覽器可以代替用戶完成http請(qǐng)求,代替用戶解析響應(yīng)結(jié)果,所以我們稱之為用戶代理 user agent。 瀏覽器兩大核心能力: 自動(dòng)發(fā)送請(qǐng)求的能力 自動(dòng)解析響應(yīng)的能力 1.1 自動(dòng)發(fā)送請(qǐng)求的能力 用戶在地址欄輸入了一個(gè)url地址,并按下了回車 瀏覽器會(huì)自動(dòng)解析URL,并發(fā)出一個(gè) GET 請(qǐng)

    2024年02月06日
    瀏覽(21)
  • 同瀏覽器下多窗口進(jìn)行跨源通信、同源通信

    同瀏覽器下多窗口進(jìn)行跨源通信、同源通信

    多頁面通信運(yùn)用到了“發(fā)布訂閱”的設(shè)計(jì)模式,一個(gè)頁面發(fā)布指令,其他頁面進(jìn)行訂閱并進(jìn)行相應(yīng)的行為操作! window.postMessage() window.postMessage() 方法可以安全地實(shí)現(xiàn)跨源通信。通常,對(duì)于兩個(gè)不同頁面的腳本,只有當(dāng)執(zhí)行它們的頁面位于具有相同的協(xié)議(通常為 https),端口

    2024年02月08日
    瀏覽(15)
  • 物聯(lián)網(wǎng)瀏覽器(IoTBrowser)-整合機(jī)器學(xué)習(xí)yolo框架實(shí)現(xiàn)車牌識(shí)別

    物聯(lián)網(wǎng)瀏覽器(IoTBrowser)-整合機(jī)器學(xué)習(xí)yolo框架實(shí)現(xiàn)車牌識(shí)別

    最近一段時(shí)間在研究AI技術(shù)在.Net平臺(tái)的使用,目前AI絕大部分是使用Python開發(fā),偶然一次在頭條看到一篇ML.NET的介紹,是Net平臺(tái)下開放源代碼的跨平臺(tái)機(jī)器學(xué)習(xí)框架。ML.NET詳細(xì)介紹 https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet ? 一開始學(xué)習(xí)的是圖像分類和目標(biāo)檢測(cè),整

    2024年04月22日
    瀏覽(21)
  • 瀏覽器跨 Tab 窗口通信原理及應(yīng)用實(shí)踐

    瀏覽器跨 Tab 窗口通信原理及應(yīng)用實(shí)踐

    最近,相信大家一定被這么個(gè)動(dòng)效給刷屏了: 以至于,基于這個(gè)效果的二次創(chuàng)作層出不窮,眼花繚亂。 基于跨窗口通信的彈彈球: 基于跨窗口通信的 Flippy Bird: 我也嘗試制作了一個(gè)跨 Tab 窗口的 CSS 動(dòng)畫聯(lián)動(dòng),效果如下: 代碼不多,核心代碼 200 行,感興趣的可以戳這里:

    2024年02月05日
    瀏覽(18)
  • 瀏覽器與服務(wù)器通信過程(HTTP協(xié)議)

    瀏覽器與服務(wù)器通信過程(HTTP協(xié)議)

    目錄 1 概念 2 常見的 web 服務(wù)器有 3 瀏覽器與服務(wù)器通信過程 3.1 DNS 3.2 URL 4 HTTP請(qǐng)求方法和應(yīng)答狀態(tài)碼 4.1 HTTP請(qǐng)求報(bào)文段實(shí)例 4.2 HTTP請(qǐng)求方法 5 HTTP應(yīng)答報(bào)頭和應(yīng)答狀態(tài) 5.1 HTTP的應(yīng)答報(bào)頭結(jié)構(gòu) 5.2 HTTP的應(yīng)答狀態(tài) 瀏覽器與 web 服務(wù)器在 應(yīng)用層 通信使用的是 HTTP 協(xié)議(超文本傳輸協(xié)

    2024年03月16日
    瀏覽(99)
  • 全棧筆記_瀏覽器擴(kuò)展篇(插件通信 - 內(nèi)容腳本與后臺(tái)腳本通信)

    后臺(tái)腳本:在后臺(tái)運(yùn)行,并在用戶與瀏覽器交互時(shí)偵聽觸發(fā)器(例如在選項(xiàng)卡上偵聽單擊事件) 內(nèi)容腳本:與網(wǎng)頁交互(主要是DOM元素) 一次性消息 內(nèi)容腳本發(fā)送消息給后臺(tái)腳本:

    2024年02月21日
    瀏覽(17)
  • 瀏覽器不同源的頁面之間如何跨域通信

    瀏覽器不同源的頁面之間如何跨域通信

    現(xiàn)在有2個(gè)項(xiàng)目,頁面路徑不同源。 ToC 的收銀臺(tái)項(xiàng)目 類似在PC端京東淘寶,支付最后一步的收銀臺(tái)頁面,可以選擇不同支付工具付款。 ToB 的后臺(tái)管理項(xiàng)目 可以對(duì)收銀臺(tái)項(xiàng)目整體做一些配置:樣式,支付工具相關(guān)的等等,配置項(xiàng)很多。 需求 想要在后臺(tái)管理項(xiàng)目中增刪配置項(xiàng)

    2024年02月14日
    瀏覽(14)
  • 初識(shí)http協(xié)議,簡(jiǎn)單實(shí)現(xiàn)瀏覽器和服務(wù)器通信

    初識(shí)http協(xié)議,簡(jiǎn)單實(shí)現(xiàn)瀏覽器和服務(wù)器通信

    平時(shí)俗稱的 “網(wǎng)址” 其實(shí)就是說的 URL,例如在百度上搜索一個(gè)C++ 可以看到這段網(wǎng)址前面有個(gè) https 那么這個(gè)就代表著使用的是https協(xié)議,現(xiàn)在都是使用https協(xié)議,不過還是需要認(rèn)識(shí)以下http協(xié)議 像 / ? : 等這樣的字符, 已經(jīng)被url當(dāng)做特殊意義理解了. 因此這些字符不能隨意出現(xiàn)。

    2024年02月14日
    瀏覽(21)
  • python模塊websockets,瀏覽器與服務(wù)器之間的雙向通信

    一、簡(jiǎn)介 WebSocket是一種在Web瀏覽器和服務(wù)器之間進(jìn)行實(shí)時(shí)雙向通信的協(xié)議。它通過建立一條持久的連接,允許服務(wù)器主動(dòng)向客戶端推送數(shù)據(jù),實(shí)現(xiàn)實(shí)時(shí)性和雙向通信的能力。 與傳統(tǒng)的HTTP請(qǐng)求-響應(yīng)模式不同,WebSocket提供了一個(gè)長時(shí)間運(yùn)行的連接,可以在客戶端和服務(wù)器之間進(jìn)

    2024年02月21日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包