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

SpringBoot實(shí)現(xiàn)WebSocket發(fā)送接收消息 + Vue實(shí)現(xiàn)SocketJs接收發(fā)送消息

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot實(shí)現(xiàn)WebSocket發(fā)送接收消息 + Vue實(shí)現(xiàn)SocketJs接收發(fā)送消息。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

SpringBoot實(shí)現(xiàn)WebSocket發(fā)送接收消息 + Vue實(shí)現(xiàn)SocketJs接收發(fā)送消息

參考:

1、https://www.mchweb.net/index.php/dev/887.html

2、https://itonline.blog.csdn.net/article/details/81221103?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-81221103-blog-121078449.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-81221103-blog-121078449.pc_relevant_aa&utm_relevant_index=1

3、https://blog.csdn.net/yingxiake/article/details/51224569

使用場(chǎng)景

廣播模式 :使用場(chǎng)景:給所有連接了這個(gè)通道的客戶端發(fā)送消息。

  • convertAndSend()
  • @SendTo

點(diǎn)對(duì)點(diǎn)模式 :使用場(chǎng)景:?jiǎn)为?dú)給當(dāng)前用戶發(fā)送消息。

  • 下面兩種方式,都默認(rèn)加了一個(gè)前綴:/user

  • convertAndSendToUser()

  • @SendToUser

一、后端SpringBoot + WebSocket基礎(chǔ)配置

1、導(dǎo)包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

2、配置config

  • 細(xì)節(jié):必須配置跨域。低版本的SpringBoot(2.1.5.RELEASE 就不行)不行,需要使用高版本。低版本的解決方案還未找到。
  • 跨域配置使用:.setAllowedOriginPatterns("*")。。不能使用:.setAllowedOrigins("*")
package com.cc.ws.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

/**
 * <p>@EnableWebSocketMessageBroker 的作用</p>
 * <li>注解開(kāi)啟使用STOMP協(xié)議來(lái)傳輸基于代理(message broker)的消息,</li>
 * <li>這時(shí)控制器支持使用 @MessageMapping,就像使用 @RequestMapping一樣</li>
 * @author cc
 *
 */
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    /** <p>啟動(dòng)簡(jiǎn)單Broker</p>
     * <p>表示客戶端訂閱地址的前綴信息,也就是客戶端接收服務(wù)端消息的地址的前綴信息</p>
     * <p>代理的名字:都是自定義的</p>
     *
     * /user     點(diǎn)對(duì)點(diǎn)(默認(rèn)也是/user,可以自定義,但是必須和setUserDestinationPrefix中的設(shè)置一致)
     * /topic1   廣播模式1
     * /topic2   廣播模式2
     *
     * /mass     廣播模式:群發(fā)
     */
    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker(
                "/user", "/topic1", "/topic2", "/mass"
        );
        // 點(diǎn)對(duì)點(diǎn)使用的訂閱前綴(客戶端訂閱路徑上會(huì)體現(xiàn)出來(lái)),不設(shè)置的話,默認(rèn)也是 /user/
        // 注意,這里必須和上面設(shè)置的Broker:/user 一致(兩個(gè)都可以自定義,但必須一致)。否則連接不上
        registry.setUserDestinationPrefix("/user/");
        // 指服務(wù)端接收地址的前綴,意思就是說(shuō)客戶端給服務(wù)端發(fā)消息的地址的前綴
//        registry.setApplicationDestinationPrefixes("/socket");
    }

    /**
     * 這個(gè)方法的作用是添加一個(gè)服務(wù)端點(diǎn),來(lái)接收客戶端的連接。
     * registry.addEndpoint("/socket")表示添加了一個(gè)/socket端點(diǎn),客戶端(前端)就可以通過(guò)這個(gè)端點(diǎn)來(lái)進(jìn)行連接。
     * withSockJS()的作用是開(kāi)啟SockJS支持。
     * @param registry registry
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 注冊(cè)一個(gè)STOMP的endpoint端點(diǎn),并指定使用SockJS協(xié)議
        // 前端使用這個(gè)地址連接后端 WebSocket接口
        registry.addEndpoint("/broadcast", "/point")
                // 允許所有源跨域。還可以指定ip配置:http://ip:*
                // 低版本的SpringBoot(2.1.5.RELEASE 就不行)不行
                .setAllowedOriginPatterns("*")
                .withSockJS();
    }

}

3、啟動(dòng)類,配置定時(shí)器

  • @EnableScheduling
@SpringBootApplication
@EnableScheduling
public class WebSocketDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(WebSocketDemoApplication.class, args);
    }
}

二、前端基礎(chǔ)配置

    let socket1 = new SockJS('http://服務(wù)器ip:服務(wù)器端口/broadcast');
   
    let stompClient1 = Stomp.over(socket1);//廣播模式

    stompClient1.connect({}, (frame) => {
      stompClient1.subscribe('/topic1/', (message) => {
        console.log(message.body);
      });
    });

三、后端不接收,只發(fā)送

  • 使用spring Scheduled 定時(shí)發(fā)送消息

  • 直接使用:SimpMessagingTemplate 的 convertAndSend廣播模式 和 convertAndSendToUser點(diǎn)對(duì)點(diǎn)模式

1、后端

  • 注意點(diǎn)對(duì)點(diǎn)發(fā)送:

convertAndSendToUser的默認(rèn)前綴(/user)是在WebSocketConfig配置文件中配置的。

代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-450540.html

    @Resource
    private SimpMessagingTemplate simpMsgTemp;

    /** 廣播推送消息1:會(huì)發(fā)送給所有連接了 topic1 這個(gè)通道的客戶端。
     * topic1:在Broker中配置
     **/
    @Scheduled(cron = "0/1 * * * * ?")
    public void getSocket(){
        String msg = String.format("%s 的第 %s 個(gè)消息", "topic1", LocalDateTime.now().getSecond());
        log.info("{}",msg);
        simpMsgTemp.convertAndSend("/topic1/", msg);
    }

    /** 廣播推送消息2:多指定一個(gè)uri。相當(dāng)于另一條通道(推薦使用)
     * <li>自定義url后綴,還可以實(shí)現(xiàn)用戶和用戶單點(diǎn)發(fā)送。</li>
     * topic2:在Broker中配置
     * custom:是自定義的
     */
    @Scheduled(cron = "0/1 * * * * ?")
    public void getSocketUser(){
        String msg = String.format("topic2 的第 %s 個(gè)消息", LocalDateTime.now().getSecond());
        log.info("{}",msg);
        simpMsgTemp.convertAndSend("/topic2/custom" ,msg);
    }

    /**點(diǎn)對(duì)點(diǎn)發(fā)送 convertAndSendToUser(第一個(gè)參數(shù):一般是用戶id)
     *  -> 假如用戶id是1。用用戶id是1的在兩個(gè)地方登陸了客戶端(比如不同的瀏覽器登陸同一個(gè)用戶),
     *  -> convertAndSendToUser會(huì)把消息發(fā)送到用戶1登陸的兩個(gè)客戶端中
     * 發(fā)送到:/user/{userId}/cs 下。cs是自定義的,且必須自定義一個(gè)。
     */
    @Scheduled(cron = "0/1 * * * * ?")
    public void pointToPoint(){
        //這個(gè)用戶id是后端獲取的當(dāng)前登陸的用戶id
        String userId = "123";
        String msg = String.format("點(diǎn)對(duì)點(diǎn):第 %s 個(gè)消息。用戶id:%s", LocalDateTime.now().getSecond(), userId);
        log.info("{}",msg);
        //發(fā)送
        simpMsgTemp.convertAndSendToUser(userId,"/cs/" ,msg);
    }

2、前端

  • 注意點(diǎn)對(duì)點(diǎn)的接收方式,用戶id需要取出前端存的用戶id
    //這樣才能同時(shí)接收后端來(lái)的三套不同通道的消息。
    // broadcast 和后端:registerStompEndpoints中的配置必須一致
    // point     和后端:registerStompEndpoints中的配置必須一致
    // broadcast、point 也可以只用一個(gè),這里只是為了好區(qū)分。
    let socket1 = new SockJS('http://yourIp:端口/broadcast');
    let socket2 = new SockJS('http://yourIp:端口/broadcast');
    let socket3 = new SockJS('http://yourIp:端口/point');
    // console.log("wb:" + socket)

    let stompClient1 = Stomp.over(socket1);
    let stompClient2 = Stomp.over(socket2);
    let stompClient3 = Stomp.over(socket3);

    // ----------------廣播模式1--------------------
    stompClient1.connect({}, (frame) => {
      console.log('-----------frame1', frame)
      stompClient1.subscribe('/topic1/', (message) => {
        console.log(message.body);
        this.msg = message.body;
        // console.log(JSON.parse(message.body));
      });
    });

    // ----------------廣播模式2--------------------
    stompClient2.connect({}, (frame) => {
      console.log('-----------frame2', frame)
      stompClient2.subscribe('/topic2/custom', (message) => {
        console.log(message.body);
        this.user = message.body;
        // console.log(JSON.parse(message.body));
      });
    });

    // ----------------點(diǎn)對(duì)點(diǎn)模式--------------------
    //前端獲取的 userId
    let userId = '123';
    //連接WebSocket服務(wù)端
    stompClient3.connect({},(frame) => {
      console.log('Connected:' + frame);
      stompClient3.subscribe('/user/' + userId + '/cs/',
          (response) => {
            this.peer = response.body;
      });
    });

四、后端接收、接收后再發(fā)送

  • 也可以只接收消息,不發(fā)送。看業(yè)務(wù)需求。
  • 使用 @MessageMapping 接收前端發(fā)送過(guò)來(lái)的消息
  • 使用:@SendTo 廣播模式、@SendToUser 點(diǎn)對(duì)點(diǎn)模式
  • 使用:SimpMessagingTemplate 的 convertAndSend廣播模式 和 convertAndSendToUser 點(diǎn)對(duì)點(diǎn)模式

1、后端

    @Resource
    private SimpMessagingTemplate simpMsgTemp;

    /** <p>廣播模式一、接收前端的消息,處理后給前端返回一個(gè)消息。</p>
     * <li>后端 把消息處理后 發(fā)送到 /mass/getResponse 路徑下</li>
     * <ol>
     *     <li>@MessageMapping("/massRequest1") :作用:接收前端來(lái)的消息。類似于@RestController</li>
     *     <li>@SendTo("/mass/getResponse1"):作用跟convertAndSend類似,廣播發(fā)給與該通道相連的客戶端。SendTo 發(fā)送至 Broker 下的指定訂閱路徑 </li>
     *     <li>@SendToUser("/mass/getResponse1"):作用跟convertAndSendToUser類似,定點(diǎn)發(fā)送。SendTo 發(fā)送至 Broker 下的指定訂閱路徑 </li>
     *     <li>/mass 必須在配置文件配置</li>
     *     <li>/getResponse1 自定義的后綴</li>
     * </ol>
     */
    @MessageMapping("/massRequest1")
    @SendTo("/mass/getResponse1")
    public String mass1(String chatRoomRequest){
        //處理前端消息……
        log.info("前端消息:{}",chatRoomRequest);
        //返回消息
        return "@SendTo 廣播一(單次) 后端處理完成!";
    }

    /** 廣播模式二、接收前端的消息,可以多次給前端發(fā)消息
     * <li>/mass 必須在配置文件配置</li>
     * <li>/getResponse2 自定義的后綴</li>
     */
    @MessageMapping("/massRequest2")
    public void mass2(String chatRoomRequest){
        log.info("前端的消息:{}",chatRoomRequest);

        for (int i = 0; i < 5; i++) {
            String msg = "后端處理后的 廣播二(多次):" + i;
            simpMsgTemp.convertAndSend("/mass/getResponse2", msg);
        }
        simpMsgTemp.convertAndSend("/mass/getResponse2",
                "后端處理后的 廣播二(多次),后端處理完成!");
    }

    /** <p>點(diǎn)對(duì)點(diǎn)一、接收前端消息,只能返回一次消息(必須登陸系統(tǒng)才能使用。)</p>
     * <li>只有發(fā)送原始消息的客戶端才會(huì)收到響應(yīng)消息,而不是所有連接的客戶端都會(huì)收到響應(yīng)消息。</li>
     * <li>/alone/getResponse1:自定義的,不需要在配置文件配置。</li>
     *
     * <p>@SendToUser</p>
     * <li>默認(rèn)該注解前綴為 /user</li>
     * <li>broadcast屬性,表明是否廣播。就是當(dāng)有同一個(gè)用戶登錄多個(gè)session時(shí),是否都能收到。取值true/false.</li>
     *
     * @param principal Principal :登陸用戶的信息,需要使用spring s安全框架寫(xiě)入信息?
     */
    @MessageMapping("/aloneRequest1")
    @SendToUser("/alone/getResponse1")
    public String alone1(String chatRoomRequest){
        //處理前端消息……
        log.info("前端消息:{}",chatRoomRequest);
        //返回消息
        return "@SendToUser 點(diǎn)對(duì)點(diǎn)一(單次) 后端處理完成!";
    }

    /** 點(diǎn)對(duì)點(diǎn)二、接收前端消息,可以多次給前端發(fā)消息
     * <li>convertAndSendToUser —— 發(fā)送消息給指定用戶id的</li>
     * <li>如果用戶1在兩個(gè)地方(A/B)登陸可以客戶端,并且連接了該通道,其中一個(gè)如A給后端發(fā)消息,后端返回消息,A/B兩個(gè)地方都會(huì)收到消息</li>
     * <ol>
     *     <li>@MessageMapping("/aloneRequest2") 接收前端指定用戶消息,</li>
     *     <li>/alone/getResponse2 不用在配置文件中配置</li>
     *     <li>返回消息 發(fā)送到 user/{userId}/alone/getResponse2 下 (定點(diǎn)發(fā)送)</li>
     * </ol>
     */
    @MessageMapping("/aloneRequest2")
    public void alone2(String chatRoomRequest){
        //后端獲取的當(dāng)前登陸的用戶的id(和前端一致)
        String userId = "456";
        log.info("前端的消息:{}",chatRoomRequest);

        for (int i = 0; i < 5; i++) {
            String msg = "后端處理后的 點(diǎn)對(duì)點(diǎn)二(多次):" + i;
            simpMsgTemp.convertAndSendToUser(userId,"/alone/getResponse2", msg);
        }
        simpMsgTemp.convertAndSendToUser(userId,"/alone/getResponse2",
                "后端處理后的 點(diǎn)對(duì)點(diǎn)二(多次),后端處理完成!");
    }

2、前端

  • 3點(diǎn)對(duì)點(diǎn)一 未實(shí)現(xiàn)。
    //連接SockJS的 broadcast
    let socket1 = new SockJS('http://yourIp:端口/broadcast');
    let socket2 = new SockJS('http://yourIp:端口/broadcast');
    let socket3 = new SockJS('http://yourIp:端口/point');
    let socket4 = new SockJS('http://yourIp:端口/point');
    //使用STMOP子協(xié)議的WebSocket客戶端
    let stompClient1 = Stomp.over(socket1);
    let stompClient2 = Stomp.over(socket2);
    let stompClient3 = Stomp.over(socket3);
    let stompClient4 = Stomp.over(socket4);

    //1廣播模式一
    stompClient1.connect({},(frame) => {
      console.log('廣播模式一:' + frame);
      //1發(fā)送消息
      stompClient1.send("/massRequest1",{},"我是前端來(lái) 廣播模式一 的消息!");

      //2接收消息
      stompClient1.subscribe('/mass/getResponse1',(response) => {
        this.broadcast1 = response.body
      });
    });

    //2廣播模式二
    stompClient2.connect({},(frame) => {
      console.log('廣播模式二:' + frame);
      //1發(fā)送消息
      stompClient2.send("/massRequest2",{},"我是前端來(lái) 廣播模式二 的消息");

      //2接收消息
      stompClient2.subscribe('/mass/getResponse2',(response) => {
        this.broadcast2 = response.body
      });
    });

    //3點(diǎn)對(duì)點(diǎn)一 :必須登陸系統(tǒng)才能實(shí)現(xiàn)。要往:Principal設(shè)置用戶登陸信息才行
    //1發(fā)送消息
    // stompClient3.send("/aloneRequest1",{},"我是前端來(lái) 點(diǎn)對(duì)點(diǎn)一 的消息");
    stompClient3.connect({},(frame) => {
      console.log('點(diǎn)對(duì)點(diǎn)一1:' + frame);
      stompClient3.send("/aloneRequest1",{},"我是前端來(lái) 點(diǎn)對(duì)點(diǎn)一 的消息");
      //2接收消息
      stompClient3.subscribe('/user/alone/getResponse1' ,(response) => {
        console.log('-------response.body', response.body)
        this.point1 = response.body
      });
    });

    //4點(diǎn)對(duì)點(diǎn)二:必須獲取現(xiàn)在登陸了的用戶id,且必須和后端一致才行。
    stompClient4.connect({},(frame) => {
      console.log('點(diǎn)對(duì)點(diǎn)二:' + frame);
      //1發(fā)送消息
      stompClient4.send("/aloneRequest2",{},"我是前端來(lái) 點(diǎn)對(duì)點(diǎn)二 的消息");

      //2接收消息
      //前端獲取的當(dāng)前登陸的用戶userId(和后端一致)
      let userId = '456';
      stompClient4.subscribe('/user/'+userId+'/alone/getResponse2',(response) => {
        this.point2 = response.body
      });
    });

到了這里,關(guān)于SpringBoot實(shí)現(xiàn)WebSocket發(fā)送接收消息 + Vue實(shí)現(xiàn)SocketJs接收發(fā)送消息的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • 207、SpringBoot 整合 RabbitMQ 實(shí)現(xiàn)消息的發(fā)送 與 接收(監(jiān)聽(tīng)器)

    207、SpringBoot 整合 RabbitMQ 實(shí)現(xiàn)消息的發(fā)送 與 接收(監(jiān)聽(tīng)器)

    1、ContentUtil 先定義常量 2、RabbitMQConfig 創(chuàng)建隊(duì)列的兩種方式之一: 配置式: 在容器中配置 org.springframework.amqp.core.Queue 類型的Bean,RabbitMQ將會(huì)自動(dòng)為該Bean創(chuàng)建對(duì)應(yīng)的隊(duì)列。 就是在配置類中創(chuàng)建一個(gè)生成消息隊(duì)列的@Bean。 問(wèn)題: 用 @Configuration 注解聲明為配置類,但是項(xiàng)目啟動(dòng)

    2024年02月06日
    瀏覽(26)
  • Java Websocket發(fā)送文件給Vue客戶端接收并上傳,實(shí)現(xiàn)檢測(cè)U盤(pán)插入并將指定文件上傳到服務(wù)器功能

    應(yīng)用環(huán)境: B/S架構(gòu) 需求描述: 1、判斷U盤(pán)接入 2、掃描U盤(pán)指定文件,將滿足條件的文件發(fā)送給服務(wù)器 解決思路: 1、因?yàn)閎s架構(gòu),無(wú)法獲取本機(jī)資源,計(jì)劃在U盤(pán)所在服務(wù)器部署websocket服務(wù) 2、websocket服務(wù)掃描u盤(pán),拿到指定文件,使用session.getBasicRemote().sendBinary(data)分批發(fā)送二

    2024年01月15日
    瀏覽(24)
  • vue+springboot+websocket實(shí)現(xiàn)消息通知,含應(yīng)用場(chǎng)景

    vue+springboot+websocket實(shí)現(xiàn)消息通知,含應(yīng)用場(chǎng)景

    vue、springboot 實(shí)現(xiàn)場(chǎng)景 點(diǎn)擊同步之后更新數(shù)據(jù),更新時(shí)間比較長(zhǎng),因此使用異步,之后該按鈕置灰,在數(shù)據(jù)更新完成之后,服務(wù)端通知客戶端已經(jīng)同步成功,通知提示框,用戶即可查看數(shù)據(jù) 前端 1、在對(duì)應(yīng)的頁(yè)面編寫(xiě)初始化、連接成功,錯(cuò)誤,接受信息方法 2、mounted或者cre

    2024年02月11日
    瀏覽(42)
  • Kafka消息隊(duì)列實(shí)現(xiàn)消息的發(fā)送和接收

    Kafka消息隊(duì)列實(shí)現(xiàn)消息的發(fā)送和接收

    消息在Kafka消息隊(duì)列中發(fā)送和接收過(guò)程如下圖所示: 消息生產(chǎn)者Producer產(chǎn)生消息數(shù)據(jù),發(fā)送到Kafka消息隊(duì)列中,一臺(tái)Kafka節(jié)點(diǎn)只有一個(gè)Broker,消息會(huì)存儲(chǔ)在Kafka的Topic(主題中),不同類型的消息數(shù)據(jù)會(huì)存儲(chǔ)在不同的Topic中,可以利用Topic實(shí)現(xiàn)消息的分類,消息消費(fèi)者Consumer會(huì)訂閱

    2024年02月11日
    瀏覽(21)
  • Java 構(gòu)建websocket客戶端,構(gòu)建wss客戶端,使用wss連接,并發(fā)送數(shù)據(jù)到服務(wù)器端,接收服務(wù)器端消息

    Java 構(gòu)建websocket客戶端,構(gòu)建wss客戶端,使用wss連接,并發(fā)送數(shù)據(jù)到服務(wù)器端,接收服務(wù)器端消息 回調(diào)函數(shù)處理

    2024年02月13日
    瀏覽(33)
  • 「RabbitMQ」實(shí)現(xiàn)消息確認(rèn)機(jī)制以確保消息的可靠發(fā)送、接收和拒收

    「RabbitMQ」實(shí)現(xiàn)消息確認(rèn)機(jī)制以確保消息的可靠發(fā)送、接收和拒收

    目錄 介紹 方案 配置手動(dòng)確認(rèn) 使用 「Bean?」 配置RabbitMQ的屬性 確定消費(fèi)、拒絕消費(fèi)、拒絕消費(fèi)進(jìn)入死信隊(duì)列 模擬生產(chǎn)者發(fā)送消息① ????????RabbitMQ 的消息確認(rèn)機(jī)制應(yīng)用場(chǎng)景非常廣泛,尤其是在需要確保消息可靠性和避免消息丟失的場(chǎng)合下更為重要,例如:金融系統(tǒng)、電

    2024年02月08日
    瀏覽(51)
  • Java 實(shí)現(xiàn)使用 Websocket 發(fā)送消息

    Java 實(shí)現(xiàn)使用 Websocket 發(fā)送消息

    需求背景:之前做了個(gè)樓棟房間數(shù)量出租了多少,需要在數(shù)據(jù)大屏上實(shí)時(shí)展示 解決方案:以切面攔截出租接口,當(dāng)有房間出租時(shí)重新查詢相關(guān)數(shù)據(jù),封裝好用websocket實(shí)時(shí)傳送前端展示 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 WebSocket 是一種在單個(gè)TCP連接上進(jìn)行全雙

    2024年03月27日
    瀏覽(22)
  • 實(shí)戰(zhàn)指南:使用Spring Boot實(shí)現(xiàn)消息的發(fā)送和接收

    當(dāng)涉及到消息發(fā)送和接收的場(chǎng)景時(shí),可以使用Spring Boot和消息中間件RabbitMQ來(lái)實(shí)現(xiàn)。下面是一個(gè)簡(jiǎn)單的示例代碼,展示了如何在Spring Boot應(yīng)用程序中創(chuàng)建消息發(fā)送者和接收者,并發(fā)送和接收一條消息。 首先,你需要進(jìn)行以下準(zhǔn)備工作 確保你已經(jīng)安裝了Java和Maven,并設(shè)置好相應(yīng)

    2024年02月11日
    瀏覽(26)
  • 使用Java服務(wù)器實(shí)現(xiàn)UDP消息的發(fā)送和接收(多線程)

    使用Java服務(wù)器實(shí)現(xiàn)UDP消息的發(fā)送和接收(多線程)

    在本篇博客中,我們將介紹如何使用Java服務(wù)器來(lái)實(shí)現(xiàn)UDP消息的發(fā)送和接收,并通過(guò)多線程的方式來(lái)處理并發(fā)請(qǐng)求。UDP(User Datagram Protocol)是一種無(wú)連接、不可靠的傳輸協(xié)議,適合于實(shí)時(shí)性要求高的應(yīng)用場(chǎng)景,如實(shí)時(shí)游戲、語(yǔ)音通信等。 步驟: 首先,我們需要導(dǎo)入Java提供的

    2024年02月12日
    瀏覽(37)
  • 如何在Java實(shí)現(xiàn)TCP方式發(fā)送和接收Socket消息(多線程模式)

    如何在Java實(shí)現(xiàn)TCP方式發(fā)送和接收Socket消息(多線程模式)

    在Java編程中,使用TCP協(xié)議進(jìn)行Socket通信是非常常見(jiàn)的場(chǎng)景。本文將詳細(xì)介紹如何在Java中實(shí)現(xiàn)TCP方式發(fā)送和接收Socket消息,并且利用多線程模式來(lái)提高通信效率。 首先,我們需要?jiǎng)?chuàng)建一個(gè)Server端來(lái)處理接收到的Socket連接請(qǐng)求。以下是實(shí)現(xiàn)的步驟: 創(chuàng)建一個(gè)ServerSocket對(duì)象,并指

    2024年02月12日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包