精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot與RSocket整合,實現(xiàn)在線聊天系統(tǒng)

開發(fā) 前端
Socket 提供了多種通信模式(Request-Response、Fire-and-Forget、Request-Stream 和 Channel),非常適合實時通信場景。相比之下,HTTP/REST 通常用于請求-響應(yīng)模式,不適合長時間的連接或頻繁的數(shù)據(jù)交換,可能導(dǎo)致較高的延遲和資源浪費。

RSocket 是一個高性能、雙向通信的二進制協(xié)議,適用于實時數(shù)據(jù)流和低延遲應(yīng)用場景。

我們?yōu)槭裁催x擇RSocket?

  • RSocket 提供了多種通信模式(Request-Response、Fire-and-Forget、Request-Stream 和 Channel),非常適合實時通信場景。相比之下,HTTP/REST 通常用于請求-響應(yīng)模式,不適合長時間的連接或頻繁的數(shù)據(jù)交換,可能導(dǎo)致較高的延遲和資源浪費。
  • RSocket 內(nèi)置對流的支持,可以高效地處理大量并發(fā)連接和數(shù)據(jù)流,適合高并發(fā)的聊天系統(tǒng)。而傳統(tǒng)的 HTTP/REST 需要為每個請求創(chuàng)建新的線程或連接,高并發(fā)情況下會導(dǎo)致資源耗盡和性能下降。
  • RSocket 是一個二進制協(xié)議,提供了更高的效率和靈活性。而HTTP/REST 使用文本格式(通常是 JSON 或 XML),增加了額外的開銷,并且每個請求都需要單獨的連接。
  • RSocket 的各個組件高度模塊化,可以根據(jù)需要進行替換和優(yōu)化。
  • RSocket 提供了內(nèi)置的安全特性和可靠的消息傳遞機制。
  • RSocket 使用長連接,減少了連接建立和銷毀的開銷。
  • 相比于 HTTP/REST,RSocket 的協(xié)議更加輕量級,減少了不必要的頭部信息。

哪些公司在使用RSocket?

  • Netflix 是 RSocket 的主要貢獻者之一。他們使用 RSocket 來實現(xiàn)微服務(wù)間的高效通信,特別是在需要實時數(shù)據(jù)流和低延遲的應(yīng)用程序中。
  • CERN (歐洲核子研究組織)使用 RSocket 來實現(xiàn)實時數(shù)據(jù)分析和監(jiān)控系統(tǒng)。
  • Capital One 在其金融應(yīng)用程序中使用 RSocket 來實現(xiàn)實時交易處理和通知系統(tǒng)。
  • PayPal 使用 RSocket 來實現(xiàn)實時支付處理和通知系統(tǒng)。
  • Uber 使用 RSocket 來實現(xiàn)實時位置跟蹤和調(diào)度系統(tǒng)。
  • Intel 使用 RSocket 來實現(xiàn)實時數(shù)據(jù)分析和機器學(xué)習(xí)模型部署。
  • Samsung SDS 在其云服務(wù)和物聯(lián)網(wǎng)解決方案中使用 RSocket。

代碼實操

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>io.rsocket</groupId>
        <artifactId>rsocket-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-rsocket</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

實現(xiàn)RSocket服務(wù)端用于處理傳入的消息

package com.example.chat;

import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.stereotype.Controller;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.core.publisher.FluxSink;

import java.time.Duration;
import java.util.concurrent.ConcurrentHashMap;

@Slf4j
@Controller
publicclass ChatController {

    // 存儲所有連接客戶端的FluxSink實例,用于廣播消息
    privatefinal ConcurrentHashMap<String, FluxSink<Message>> clients = new ConcurrentHashMap<>();

    /**
     * 處理發(fā)送消息請求
     *
     * @param message 要發(fā)送的消息對象
     * @return 返回空Mono表示操作完成
     */
    @MessageMapping("chat.sendMessage")
    public Mono<Void> sendMessage(Message message) {
        log.info("Received message: {}", message); // 記錄接收到的消息
        // 將消息廣播給所有已連接的客戶端
        clients.values().forEach(sink -> sink.next(message));
        return Mono.empty(); // 操作完成
    }

    /**
     * 處理客戶端連接請求
     *
     * @param username 客戶端用戶名
     * @return 返回一個Flux流,包含來自服務(wù)器和其他客戶端的消息
     */
    @MessageMapping("chat.connect")
    public Flux<Message> connect(String username) {
        log.info("User connected: {}", username); // 記錄用戶連接事件
        // 創(chuàng)建一個新的Flux流,并將其存儲在clients集合中
        return Flux.create(sink -> clients.put(username, sink))
                .doOnCancel(() -> { // 當(dāng)客戶端斷開連接時執(zhí)行的操作
                    log.info("User disconnected: {}", username); // 記錄用戶斷開連接事件
                    clients.remove(username); // 從clients集合中移除該用戶的sink
                })
                .mergeWith(Flux.interval(Duration.ofSeconds(1)) // 合并一個定時消息流
                        .map(tick -> new Message("Server", "Ping"))); // 發(fā)送心跳消息
    }
}

定義消息類用于傳輸數(shù)據(jù)

package com.example.chat;

import lombok.Data;

/**
 * 消息類,用于在客戶端和服務(wù)端之間傳輸消息
 */
@Data
publicclass Message {
    private String sender; // 發(fā)送者名稱
    private String content; // 消息內(nèi)容

    public Message() {}

    public Message(String sender, String content) {
        this.sender = sender;
        this.content = content;
    }
}

配置RSocket服務(wù)器,接受來自客戶端的連接

package com.example.chat.config;

import io.rsocket.transport.netty.server.TcpServerTransport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.rsocket.RSocketStrategies;
import org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler;

@Configuration
publicclass RSocketConfig {

    /**
     * 配置RSocket消息處理器
     *
     * @param strategies RSocket策略
     * @return RSocket消息處理器實例
     */
    @Bean
    public RSocketMessageHandler rsocketMessageHandler(RSocketStrategies strategies) {
        RSocketMessageHandler handler = new RSocketMessageHandler();
        handler.setRSocketStrategies(strategies); // 設(shè)置RSocket策略
        handler.route("chat.*") // 設(shè)置路由模式
               .acceptMimeType(org.springframework.util.MimeTypeUtils.APPLICATION_JSON); // 設(shè)置支持的消息類型
        return handler;
    }

    /**
     * 配置TCP服務(wù)器傳輸方式
     *
     * @return TCP服務(wù)器傳輸實例
     */
    @Bean
    public TcpServerTransport tcpServerTransport() {
        return TcpServerTransport.create(7000); // 監(jiān)聽7000端口
    }
}

測試

需要先安裝rsc 命令行工具。如果你本地沒有這個命令工具,請到GitHub (https://github.com/making/rsc/releases) 自行安裝。

第一個終端窗口A中訂閱消息

rsc --request-stream tcp://localhost:7000 chat.connect -d "Alice"

第二個終端窗口B中發(fā)送消息

rsc --fire-and-forget tcp://localhost:7000 chat.sendMessage -d '{"sender":"Bob","content":"Hello Alice!"}'

查看第一個終端窗口A的結(jié)果

{"sender":"Server","content":"Ping"}
{"sender":"Bob","content":"Hello Alice!"}
{"sender":"Server","content":"Ping"}


責(zé)任編輯:武曉燕 來源: Java知識日歷
相關(guān)推薦

2023-01-13 00:02:41

2023-01-05 09:17:58

2025-04-23 08:50:00

SpringBootCurator分布式鎖

2025-05-06 08:40:21

SpringPostGIS系統(tǒng)

2025-03-03 07:30:00

SpringBootJGraphT網(wǎng)絡(luò)建模

2025-03-31 08:43:34

SpringTika優(yōu)化

2025-04-08 08:50:37

SpringCamel系統(tǒng)

2025-02-28 08:40:28

ZooKeeperSpringBoot計費系統(tǒng)

2025-06-03 02:10:00

SpringInfluxDB數(shù)據(jù)

2025-09-26 08:46:30

2025-03-11 09:28:34

2025-03-26 01:55:00

Spring協(xié)議物聯(lián)網(wǎng)

2025-02-26 09:24:54

SpringMySQLMyBatis

2025-04-21 03:00:00

2025-03-20 08:57:54

Spring日志存儲系統(tǒng)

2025-04-25 08:34:52

2025-09-08 09:14:31

SpringQuartz自動識別

2010-06-04 13:18:22

2009-08-17 17:16:19

C#實現(xiàn)在線升級

2021-07-14 13:12:51

點贊
收藏

51CTO技術(shù)棧公眾號

午夜精品电影在线观看| 久久亚洲精品网站| 欧美xxxxx在线视频| 青青免费在线视频| 久久大逼视频| 亚洲第一区在线| 男人天堂网视频| 丁香在线视频| 国产真实乱子伦精品视频| 久久久精品久久久| 亚洲天堂美女视频| 日韩一区二区三区免费| 国产精品理论片在线观看| 999热视频| 亚洲天堂一区在线| 久久中文视频| 精品国产乱码久久久久久牛牛| 国产青青在线视频| 番号在线播放| 国产一区二区免费视频| 欧美专区日韩视频| 国产又粗又猛又爽又黄的视频四季 | www午夜视频| 中文字幕在线观看播放| 99视频一区二区三区| 国产精品久久久久久久久久99| 亚洲波多野结衣| 女同久久另类99精品国产| 欧美日韩中文字幕精品| 日韩尤物视频| wwwav网站| 日本伊人精品一区二区三区观看方式| 久久综合电影一区| 插吧插吧综合网| 国产精品一区二区三区四区在线观看| 红桃av永久久久| 日本不卡久久| 成人黄色免费视频| 午夜亚洲视频| 欧美高清自拍一区| 亚洲女同二女同志奶水| 日韩美女毛片| 日韩免费高清av| 精品久久久久久无码国产| 日本电影在线观看| 中文字幕中文字幕在线一区 | 日韩最新免费不卡| 国产精品jizz| 91久久青草| 天天综合天天做天天综合| 永久久久久久| 成人网视频在线观看| 成人av免费在线播放| 91免费版网站入口| 在线观看免费高清视频| 六月婷婷一区| 国内精品久久影院| 激情小说中文字幕| 2023国产精品久久久精品双| 亚洲香蕉伊综合在人在线视看| 国产 xxxx| 999在线精品| 欧美一卡二卡三卡四卡| 一本一道久久a久久综合蜜桃| 日韩国产网站| 色丁香久综合在线久综合在线观看| 一卡二卡三卡视频| 青青青草视频在线| 亚洲电影第三页| 国产成人在线小视频| av文字幕在线观看| 中文字幕欧美激情| 午夜精品亚洲一区二区三区嫩草 | caoporm超碰国产精品| 亚洲已满18点击进入在线看片 | 国产女主播喷水高潮网红在线| 欧美黑人做爰爽爽爽| 欧美精品一区二区蜜臀亚洲| 中文字幕天堂av| 红杏成人性视频免费看| 欧美精品一区二区三区在线| yjizz视频| 精品国产午夜肉伦伦影院| 精品国产污污免费网站入口 | 日韩污视频在线观看| 亚洲国产1区| 91精品国产乱码久久久久久久久| 日韩免费黄色片| 亚洲资源av| 国产成人精品一区二区| 中文字幕无线码一区| 精品无人码麻豆乱码1区2区 | 亚洲精选在线观看| 亚洲人成人无码网www国产| 国产影视一区| 久久精品亚洲94久久精品| 国产在视频线精品视频| 久久久久久久久久久久久久久久久久| 超碰精品一区二区三区乱码| 久久久全国免费视频| 亚洲三级视频| 国产精品美女无圣光视频| 亚洲永久精品视频| 高清不卡在线观看| 国产伦精品一区二区三区照片91| 亚欧洲精品视频| 国产欧美一区二区三区鸳鸯浴| 亚洲欧美日产图| av软件在线观看| 欧美日韩中文字幕在线视频| 免费看污污网站| 亚洲2区在线| 亚洲免费视频一区二区| 日本 欧美 国产| 在线免费观看日本欧美爱情大片| 欧美精品激情在线| 国产99久久久久久免费看| 国产一区欧美一区| 欧美美乳视频网站在线观看| 黄色免费网站在线观看| 亚洲综合一二三区| www日韩视频| 一区二区在线免费播放| 亚洲人成电影网站色| 一区二区国产精品精华液| 99亚洲一区二区| 91精品久久久久久综合乱菊| 天天干天天色天天| 中文字幕一区二区三区视频| 成人一对一视频| 久久免费福利| 亚洲欧美日韩中文视频| 欧美卡一卡二卡三| 日韩激情av在线| 含羞草久久爱69一区| 日本蜜桃在线观看| 色综合中文字幕| 亚洲区 欧美区| 久久人人99| 日韩av成人在线| 欧美 日韩 国产 精品| 国产午夜精品一区二区| 免费看国产一级片| 欧美午夜网站| 日韩亚洲在线观看| 天堂免费在线视频| 国产精品欧美一区二区三区不卡| 精品sm在线观看| 青娱乐国产视频| 日韩亚洲在线| 成人羞羞视频免费| av在线免费网址| 在线播放国产精品二区一二区四区 | b站大片免费直播| 国产欧美日韩综合一区在线播放 | 久久精品视频网站| 影音先锋黄色网址| 国产婷婷精品av在线| 午夜精品久久久久久久无码| 高清一区二区三区| 日韩在线观看你懂的| 国内精品福利视频| 97国产一区二区| 少妇高潮喷水在线观看| 韩国精品福利一区二区三区| 欧美黑人性视频| 亚洲av无码一区二区三区性色| 亚洲视频图片小说| 91亚洲精品久久久蜜桃借种| 希岛爱理av一区二区三区| 国产日韩欧美综合| 精产国品自在线www| 91麻豆精品国产91久久久资源速度 | 日本一区二区三区精品| 26uuu亚洲综合色| 久久久久久久9| 精品视频高潮| 日韩av电影手机在线| 乱精品一区字幕二区| 亚洲国产aⅴ成人精品无吗| 伊人网综合视频| 99日韩精品| 日本成人黄色| 亚洲精品一区av| 欧美高清电影在线看| 丰满人妻妇伦又伦精品国产| 亚洲激情五月婷婷| 国产女人18毛片水真多18| 亚洲一区二区三区免费在线观看 | 欧美成人一区二区在线观看| 亚洲免费专区| 国产日本欧美在线观看| 91蜜桃在线视频| 日韩av综合中文字幕| 日本免费在线观看视频| 亚洲国产精品成人久久综合一区| 亚洲午夜精品一区| 在线日韩电影| 美国av一区二区三区| 在线天堂资源| 日韩视频免费大全中文字幕| 东京干手机福利视频| 欧美午夜激情视频| 永久免费看片视频教学| 99视频精品免费视频| 在线观看国产一级片| 国产精品国产一区| 国产精品12| 成人一级视频| 午夜精品一区二区三区在线视 | 国产午夜性春猛交ⅹxxx| 国产欧美日韩亚州综合 | 超碰一区二区| 日韩色av导航| 欧洲视频在线免费观看| 欧美高清视频不卡网| 国产大学生自拍| 久久一留热品黄| 亚洲AV无码久久精品国产一区| 日韩一级大片| 老汉色影院首页| 中文无码日韩欧| 欧美性在线观看| 国产传媒在线播放| 国产一区二区三区视频免费| 亚洲精品97久久中文字幕无码| 欧美中文字幕亚洲一区二区va在线 | 欧美高清hd| 国产99视频精品免视看7| 日韩av官网| 久久亚洲精品毛片| 国产区视频在线| 亚洲国产成人91精品| 国产乱淫片视频| 91国偷自产一区二区开放时间| 欧美人妻精品一区二区免费看| 国产日韩欧美精品在线| av在线播放网址| 久久成人免费网| 激情内射人妻1区2区3区| 日韩视频三区| www.激情网| 91精品91| 在线日韩av永久免费观看| 亚洲精华一区二区三区| 国产福利一区二区三区在线观看| av一级久久| 国产精品福利观看| 欧美精品高清| 国产精品第一区| 欧美xx视频| 欧美一级大片在线免费观看| xxx性欧美| 欧美精品www在线观看| 欧美xxxx做受欧美88bbw| 国产亚洲欧美视频| 国精产品乱码一区一区三区四区| 日韩亚洲欧美中文三级| 99视频国产精品免费观看a| 在线播放视频一区| 国产精品无码一区二区桃花视频 | 日韩成人一区| 青青草一区二区| 后进极品白嫩翘臀在线播放| 欧美乱妇高清无乱码| 成人在线直播| 久久国产精品免费视频| yellow91字幕网在线| 麻豆成人在线看| 成人日批视频| 最新国产精品亚洲| 麻豆网在线观看| 久久亚洲私人国产精品va| 国产丝袜在线| 欧美老少配视频| 丰满的护士2在线观看高清| 色综合五月天导航| 成人bbav| 日韩免费视频在线观看| av一区在线播放| 国产日韩在线看片| 精品亚洲二区| 国产伦精品一区二区三区高清| 日本一区二区三区播放| 国产精品久久久一区二区三区 | 久久影视中文粉嫩av| 国产麻豆精品久久| 欧美一区二区视频在线| 国产欧美一区二区三区精品观看| 亚洲人成人77777线观看| 91精品综合| 亚洲熟妇国产熟妇肥婆| 日日欢夜夜爽一区| 午夜视频在线网站| 成人免费av资源| 免费看黄色av| 樱桃视频在线观看一区| 欧美日韩乱国产| 欧美精品乱码久久久久久| 欧美特黄一级视频| 这里只有精品在线播放| 欧美伦理免费在线| 欧洲精品久久久| 国产精品成人**免费视频| 国产精品国产精品国产专区蜜臀ah| 偷窥自拍亚洲色图精选| 亚洲在线不卡| 亚洲国内自拍| 亚洲精品乱码久久久久久自慰 | 三级av免费观看| 国产成人久久精品77777最新版本| jizz日本免费| 亚洲免费av网站| 国产污视频网站| 日韩久久免费av| 在线免费观看黄色| 97热在线精品视频在线观看| 高清不卡av| 91视频婷婷| 成人免费看片39| 日本少妇高潮喷水视频| 国产一区二区视频在线播放| 亚洲成人网在线播放| 一区二区三区资源| 国产无遮挡又黄又爽又色视频| 精品国产成人在线影院| 国际av在线| 国产69精品99久久久久久宅男| 中文字幕成人| 日本在线一区| 亚洲综合日韩| 人妻体内射精一区二区三区| 亚洲精品视频在线观看网站| 一级黄色短视频| 色琪琪综合男人的天堂aⅴ视频| 中文字幕人成乱码在线观看| 国产综合 伊人色| 好吊视频一区二区三区四区| 日韩av福利在线观看| |精品福利一区二区三区| 夜夜躁日日躁狠狠久久av| 亚洲女人天堂色在线7777| 欧美久久天堂| 精品欧美日韩在线| 亚洲麻豆av| 大地资源二中文在线影视观看| 午夜亚洲福利老司机| 国产91麻豆视频| 欧美激情免费观看| 国产伦精品一区二区三区在线播放| 996这里只有精品| 成人毛片视频在线观看| 国产 日韩 欧美 成人| 亚洲国产私拍精品国模在线观看| 四虎影院观看视频在线观看| http;//www.99re视频| 欧美天天视频| 999精品免费视频| 欧美午夜女人视频在线| 免费在线稳定资源站| 国产97在线观看| 久久高清精品| 日本黄色www| 香蕉加勒比综合久久| 十九岁完整版在线观看好看云免费| 日本中文字幕久久看| 成人激情开心网| 拔插拔插华人永久免费| 一区二区三区不卡视频 | 国产99久久久久| 日本一区二区三区四区五区| 日韩美女av在线| 国产成人免费| 肉大捧一出免费观看网站在线播放| 国产91丝袜在线播放九色| 91午夜视频在线观看| 亚洲欧美日本精品| 日韩精品一级毛片在线播放| 成人国产在线看| 久久综合网色—综合色88| 日韩欧美一级大片| 欧美大胆在线视频| 秋霞蜜臀av久久电影网免费| 国产精品天天av精麻传媒| 亚洲日本va在线观看| 亚洲 欧美 激情 另类| 国产精品美乳一区二区免费 | 九九久久综合网站| 亚洲第一二三区| 午夜免费福利网站| 日韩欧美成人精品| 高清免费电影在线观看| 裸体丰满少妇做受久久99精品| 精品制服美女丁香| 日韩精品一区二区三区国语自制| 亚洲小视频在线观看| 综合成人在线| 婷婷免费在线观看| 精品福利免费观看| 黄色网在线免费观看|