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

Spring WebSocket實(shí)現(xiàn)實(shí)時(shí)通信,構(gòu)建高可靠的實(shí)時(shí)交互系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了Spring WebSocket實(shí)現(xiàn)實(shí)時(shí)通信,構(gòu)建高可靠的實(shí)時(shí)交互系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、簡(jiǎn)介

Spring WebSocket是基于WebSocket協(xié)議的一個(gè)開源框架,它使得開發(fā)人員可以更加方便地建立實(shí)時(shí)通信機(jī)制,以推送消息和數(shù)據(jù)并實(shí)時(shí)更新通信系統(tǒng)中的狀態(tài)。Spring WebSocket被廣泛應(yīng)用于社交網(wǎng)站、電子商務(wù)、在線游戲等WEB應(yīng)用程序中,以實(shí)現(xiàn)實(shí)時(shí)通信和即時(shí)響應(yīng)。

Spring WebSocket的一個(gè)顯著優(yōu)勢(shì)是它提供了很好的可擴(kuò)展性,通過底層的WebSocket協(xié)議,開發(fā)人員可以輕松地在服務(wù)器與客戶端之間構(gòu)建一個(gè)實(shí)時(shí)通信的渠道,同時(shí)實(shí)現(xiàn)跨平臺(tái)和跨應(yīng)用程序的通信。

二、WebSocket的實(shí)時(shí)通信原理及應(yīng)用場(chǎng)景

WebSocket是一種基于TCP協(xié)議的實(shí)時(shí)通信協(xié)議,在建立連接成功后,雙方可以隨時(shí)向?qū)Ψ桨l(fā)送消息,而不用擔(dān)心網(wǎng)絡(luò)延遲等問題。不同于HTTP協(xié)議,WebSocket協(xié)議支持雙向通信它可以實(shí)時(shí)推送消息和數(shù)據(jù),極大地提升了實(shí)時(shí)性和即時(shí)性。WebSocket通過“握手”機(jī)制建立TCP連接,一旦連接建立,兩端就可以互相發(fā)送消息。WebSocket的數(shù)據(jù)交換格式是fram,每一個(gè)fram實(shí)際上就是客戶端與服務(wù)器之間的通信數(shù)據(jù)包,每個(gè)fram可以攜帶一段opcode和payload。通過WebSocket協(xié)議可以輕松地實(shí)現(xiàn)實(shí)時(shí)交互系統(tǒng),例如在線聊天室、多人在線游戲等應(yīng)用場(chǎng)景。

WebSocket在實(shí)時(shí)交互系統(tǒng)中的應(yīng)用場(chǎng)景十分廣泛。在線游戲、在線問答、即時(shí)通信、在線教育等應(yīng)用場(chǎng)景都可以使用WebSocket實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳遞和交互。WebSocket還廣泛地應(yīng)用于金融、醫(yī)療等領(lǐng)域的實(shí)時(shí)交易和實(shí)時(shí)監(jiān)控系統(tǒng)中,以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)推送和實(shí)時(shí)處理。

三、Spring WebSocket的實(shí)時(shí)通信實(shí)現(xiàn)方法

1 Spring WebSocket實(shí)時(shí)通信的基本實(shí)現(xiàn)方法

Spring WebSocket的基本實(shí)現(xiàn)方法是通過構(gòu)建一個(gè)基于STOMP協(xié)議的WebSocket Message Broker實(shí)現(xiàn)消息代理,利用SimpMessagingTemplate發(fā)送STOMP消息,通過消息代理中轉(zhuǎn)完成消息的發(fā)布和訂閱,最終實(shí)現(xiàn)實(shí)時(shí)通信。

首先需要編寫一個(gè)WebSocket配置類WebSocketConfig,用于配置WebSocket的相關(guān)信息并根據(jù)需要添加攔截器、配置消息代理等內(nèi)容。下面是一個(gè)簡(jiǎn)單的WebSocketConfig示例代碼:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/chat").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

}

在上述代碼中首先使用@Configuration和@EnableWebSocketMessageBroker注解開啟WebSocket消息處理器。然后我們重寫了registerStompEndpoints方法,將"/chat"路徑注冊(cè)到Stomp子協(xié)議的WebSocket處理器中,并啟用SockJS通信協(xié)議。

在configureMessageBroker方法中定義了消息代理,即用于處理來自客戶端的消息或廣播到客戶端的消息的中間件。config.enableSimpleBroker("/topic")定義了在/topic前綴下的消息將被代理到該WebSocket連接的所有客戶端上。同時(shí),config.setApplicationDestinationPrefixes("/app")定義了應(yīng)用程序接收消息的前綴例如要接收"/app/chat"的消息,請(qǐng)定義被@MessageMapping("/chat")注解的方法。

接下來需要為WebSocket消息添加攔截器,可以使用ChannelInterceptorAdapter。攔截器可以監(jiān)聽客戶端的消息,同時(shí)還可以對(duì)消息進(jìn)行處理和轉(zhuǎn)換。在WebSocketConfig類中可以重寫configureClientInboundChannel方法來配置客戶端攔截器。下面是一個(gè)攔截器示例代碼:

public class MyChannelInterceptor extends ChannelInterceptorAdapter {
    @Override
    public Message<?> preSend(Message<?> message, MessageChannel channel) {
        // 在消息發(fā)送到目的地之前進(jìn)行處理
        return message;
    }
}

最后需要編寫Controller類此類用于處理客戶端WebSocket的請(qǐng)求和響應(yīng)。Controller類需要使用@MessageMapping注解標(biāo)注要監(jiān)聽的消息路徑,并使用@SendTo注解定義發(fā)送消息的路徑。下面是一個(gè)Controller類示例代碼:

@Controller
public class ChatController {

    @MessageMapping("/chat")
    @SendTo("/topic/messages")
    public Message greeting(HelloMessage message) throws Exception {
        return new Message("Hello, " + message.getName() + "!");
    }

    @Data
    static class HelloMessage {
        private String name;
    }

    @Data
    static class Message {
        private String content;

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

在上面的代碼中定義了一個(gè)ChatController類,用于處理來自"/chat"地址的WebSocket請(qǐng)求。當(dāng)WebSocket請(qǐng)求到達(dá)時(shí),將調(diào)用greeting方法。@MessageMapping("/chat")用于定義要監(jiān)聽的WebSocket請(qǐng)求地址,@SendTo("/topic/messages")用于定義要發(fā)送到的WebSocket廣播地址。在greeting方法中,我們構(gòu)造出一個(gè)Message對(duì)象,并將其發(fā)送到/topic/messages廣播地址。

2 Spring WebSocket實(shí)時(shí)通信的高可靠實(shí)現(xiàn)方法

對(duì)于一些對(duì)實(shí)時(shí)性和可靠性要求較高的應(yīng)用場(chǎng)景,如果WebSocket連接異常斷開后需要及時(shí)向客戶端發(fā)送通知以便客戶端及時(shí)響應(yīng)。為了提高可靠性,可以使用ScheduledExecutorService定時(shí)任務(wù)機(jī)制,定期檢查WebSocket連接狀態(tài)來提醒客戶端重新建立WebSocket連接。

@Component
public class WebSocketCheckTask {

    private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketCheckTask.class);

    private final SimpMessagingTemplate simpMessagingTemplate;

    @Autowired
    public WebSocketCheckTask(final SimpMessagingTemplate simpMessagingTemplate) {
        this.simpMessagingTemplate = simpMessagingTemplate;
    }

    @Scheduled(fixedRate = 5000)
    public void check() {
        DefaultSimpUserRegistry registry = (DefaultSimpUserRegistry) simpMessagingTemplate.getUserRegistry();
        registry.getUsers().stream()
                .filter(user -> user.isSessionPresent("/topic/connection-check"))
                .forEach(user -> {
                    simpMessagingTemplate.convertAndSendToUser(user.getName(), "/topic/connection-check", new ConnectionCheckMessage());
                    LOGGER.debug("{}", user.getName());
                });
    }
}

在上述代碼中創(chuàng)建了一個(gè)WebSocketCheckTask類,使用@Scheduled注解實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度,每隔固定時(shí)間通過SimpMessagingTemplate的getUserRegistry()獲取所有已經(jīng)成功連接的WebSocket用戶,通過isSessionPresent判斷用戶是否在線并且是否需要斷線重連。如果用戶在線,則通過convertAndSendToUser向其發(fā)送消息,提醒其斷線重連。

為了充分利用WebSocket的推送機(jī)制需要在客戶端JavaScript中添加WebSocket的close和open事件監(jiān)聽器,并在事件觸發(fā)時(shí)向服務(wù)器發(fā)送實(shí)時(shí)通知,以便服務(wù)器及時(shí)響應(yīng)并通知其他客戶端。下面是一個(gè)WebSocket監(jiān)聽器示例代碼:

var webSocket = new WebSocket("ws://" + window.location.host + "/chat");

webSocket.onopen = function(event) {
    console.log("WebSocket connecion established");
};

webSocket.onclose = function(event) {
    console.log("WebSocket connecion closed");
};

webSocket.onmessage = function(event) {
    console.log("Received message: " + event.data);
};

在上面的代碼中使用WebSocket API創(chuàng)建了一個(gè)WebSocket對(duì)象,并添加了open、close和message事件監(jiān)聽器。當(dāng)WebSocket連接成功建立時(shí),open事件會(huì)被觸發(fā),我們可以通過console輸出來顯示連接已經(jīng)建立。當(dāng)WebSocket連接關(guān)閉時(shí),close事件會(huì)被觸發(fā),我們也可以通過console輸出顯示連接已經(jīng)關(guān)閉。當(dāng)通過WebSocket接收到消息時(shí),message事件會(huì)被觸發(fā),我們同樣可以通過console顯示消息內(nèi)容。

四、構(gòu)建高可靠的實(shí)時(shí)交互系統(tǒng)

1. 構(gòu)建高可靠的實(shí)時(shí)交互系統(tǒng)的基本考慮

隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展實(shí)時(shí)通信成為了很多應(yīng)用系統(tǒng)中必不可少的一部分,例如在線教育、在線游戲、金融實(shí)時(shí)交易等。實(shí)時(shí)通信系統(tǒng)需要保證通信的及時(shí)性和可靠性,否則會(huì)對(duì)用戶體驗(yàn)產(chǎn)生極大的負(fù)面影響,因此構(gòu)建高可靠的實(shí)時(shí)交互系統(tǒng)顯得尤為重要。

在構(gòu)建高可靠的實(shí)時(shí)交互系統(tǒng)時(shí)需要考慮一些因素,如:

  1. 實(shí)時(shí)性:實(shí)時(shí)通信需要保證客戶端與服務(wù)器之間的消息傳輸速度,減少消息傳輸延遲,并實(shí)現(xiàn)快速響應(yīng)用戶請(qǐng)求的目的。
  2. 可靠性:實(shí)時(shí)交互系統(tǒng)需要保證通信的可靠性,避免信息丟失或不完整的情況發(fā)生,保證通話內(nèi)容的完整性,避免造成誤解或損失。
  3. 擴(kuò)展性:實(shí)時(shí)交互系統(tǒng)需要具備良好的可擴(kuò)展性,能夠隨著系統(tǒng)規(guī)模的擴(kuò)大而擴(kuò)展,保證系統(tǒng)的穩(wěn)定性和安全性。

2. 實(shí)現(xiàn)實(shí)時(shí)通信的高可靠性方案

在實(shí)現(xiàn)實(shí)時(shí)通信的高可靠性方案中可以使用一些技術(shù)手段來提升通信的可靠性和實(shí)時(shí)性,這里介紹兩種常見的方案:心跳包和重連機(jī)制。

心跳包

心跳包是一種特殊的網(wǎng)絡(luò)包用于驗(yàn)證服務(wù)器與客戶端之間的連接是否正常。在實(shí)時(shí)通信中可以通過設(shè)置一定的時(shí)間,定期向服務(wù)器發(fā)送心跳包,如果在規(guī)定的時(shí)間內(nèi)客戶端沒有發(fā)送任何心跳包,則認(rèn)為與服務(wù)器的連接已經(jīng)中斷,此時(shí)需要及時(shí)通知客戶端并重連。通過心跳包機(jī)制可以避免長(zhǎng)時(shí)間沒有數(shù)據(jù)傳輸而被認(rèn)為是網(wǎng)絡(luò)異常掉線,多次無效掉線將引發(fā)系統(tǒng)的癱瘓,從而提高實(shí)時(shí)通信的可靠性。

在Spring WebSocket中通過配置Interceptors攔截器來實(shí)現(xiàn)心跳包的發(fā)送和接收,在WebSocket連接時(shí),在服務(wù)器端通過SimpMessagingTemplate向客戶端發(fā)送心跳包,在客戶端接收到心跳包時(shí),通過SimpMessagingTemplate向服務(wù)端發(fā)送確認(rèn)信息。

以下是WebSocket攔截器的示例代碼:

public class WebSocketHeartBeatHandler extends ChannelInterceptorAdapter {
    // 發(fā)送心跳包的時(shí)間間隔
    private final int HEARTBEAT_INTERVAL = 10;

    @Override
    public boolean preSend(Message<?> message, MessageChannel channel) {
        StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
        // 判斷是否為心跳消息
        if (accessor != null && StompCommand.CONNECT.equals(accessor.getCommand())) {
            SimpMessageHeaderAccessor simpAccessor = SimpMessageHeaderAccessor.create(message);
            simpAccessor.setSessionAttributes(new ConcurrentHashMap<>(16));
            accessor.setHeader(SimpMessageHeaderAccessor.HEART_BEAT_HEADER, HEARTBEAT_INTERVAL + "," + HEARTBEAT_INTERVAL);
        }
        // 其他消息則直接通過ChannelInterceptorAdapter過濾而不做任何處理
        return true;
    }
}

在上面的代碼中創(chuàng)建了一個(gè)名為WebSocketHeartBeatHandler的攔截器,用于實(shí)現(xiàn)心跳包的發(fā)送和接收。在preSend方法中,我們通過判斷是否為心跳消息和設(shè)置心跳時(shí)間間隔參數(shù)來實(shí)現(xiàn)心跳包的發(fā)送。

重連機(jī)制

重連機(jī)制是指客戶端與服務(wù)器之間的連接異常斷開時(shí),客戶端可以嘗試重新連接并恢復(fù)通信,以確保通信過程中不會(huì)因?yàn)檫B接的問題而中斷。在實(shí)時(shí)通信中,當(dāng)客戶端與服務(wù)器之間的連接意外斷開時(shí),客戶端會(huì)嘗試重新連接服務(wù)器,如果連接成功,則重新建立通道并進(jìn)行數(shù)據(jù)傳輸。

在Spring WebSocket中重連機(jī)制需要在客戶端JavaScript中實(shí)現(xiàn),例如通過定時(shí)器來定時(shí)檢查WebSocket連接的狀態(tài),如果連接斷開了,則重新連接服務(wù)器。以下是重連機(jī)制的示例代碼:

function connect() {
    var socket = new SockJS('/websocket'); // 連接WebSocket
    var stompClient = Stomp.over(socket);

    stompClient.connect({}, function (frame) {
        // 連接成功之后,執(zhí)行后續(xù)處理
    }, function (error) {
        console.log(error);
        // 斷線重連接口
        setTimeout(function () {
            connect();
        }, 5000);
    });
}
connect();

在上面的代碼中使用SockJS連接WebSocket,使用Stomp.over()創(chuàng)建一個(gè)STOMP協(xié)議客戶端,然后連接到服務(wù)器。當(dāng)連接成功時(shí)執(zhí)行后續(xù)處理。如果連接失敗,則通過setTimeout方法實(shí)現(xiàn)斷線重連機(jī)制,超時(shí)5秒后再次嘗試連接。

五、小結(jié)回顧

1. Spring WebSocket實(shí)現(xiàn)實(shí)時(shí)通信的意義及優(yōu)點(diǎn)

Spring WebSocket是基于WebSocket協(xié)議的一個(gè)開源框架,它使得開發(fā)人員可以更加方便地建立實(shí)時(shí)通信機(jī)制,以推送消息和數(shù)據(jù)并實(shí)時(shí)更新通信系統(tǒng)中的狀態(tài)。Spring WebSocket被廣泛應(yīng)用于社交網(wǎng)站、電子商務(wù)、在線游戲等WEB應(yīng)用程序中,以實(shí)現(xiàn)實(shí)時(shí)通信和即時(shí)響應(yīng)。Spring WebSocket具有可擴(kuò)展性強(qiáng)、部署簡(jiǎn)單、協(xié)議靈活等優(yōu)點(diǎn)。

2. 實(shí)現(xiàn)實(shí)時(shí)通信的注意事項(xiàng)和建議

在實(shí)現(xiàn)實(shí)時(shí)通信時(shí)需要注意以下幾點(diǎn):

  1. 實(shí)時(shí)通信需要保證通信雙方之間的實(shí)時(shí)性,減小消息傳輸?shù)难舆t和提升響應(yīng)速度。
  2. 實(shí)時(shí)通信需要保證數(shù)據(jù)的完整性和準(zhǔn)確性,避免出現(xiàn)信息丟失或不完整的情況。
  3. 實(shí)時(shí)通信需要具備良好的可擴(kuò)展性,能夠隨著系統(tǒng)規(guī)模的擴(kuò)大而擴(kuò)展,保證系統(tǒng)的穩(wěn)定性和安全性。
  4. 實(shí)時(shí)通信需要充分考慮系統(tǒng)的安全性,防止對(duì)系統(tǒng)的攻擊、漏洞利用等安全問題。

在實(shí)時(shí)通信的設(shè)計(jì)中可以使用一些技術(shù)手段來提升實(shí)時(shí)通信的可靠性和實(shí)時(shí)性:

  1. 心跳包機(jī)制可以避免長(zhǎng)時(shí)間沒有數(shù)據(jù)傳輸而被認(rèn)為是網(wǎng)絡(luò)異常掉線,從而保證實(shí)時(shí)通信的可靠性。
  2. 斷線重連機(jī)制可以避免因網(wǎng)絡(luò)連接意外中斷而導(dǎo)致通信中斷,從而提高實(shí)時(shí)通信的穩(wěn)定性。

總之實(shí)時(shí)通信在當(dāng)前的互聯(lián)網(wǎng)應(yīng)用中已經(jīng)變得不可或缺,通過合理的設(shè)計(jì)和技術(shù)手段的應(yīng)用,可以實(shí)現(xiàn)實(shí)時(shí)通信的高可靠性和高速度,并為應(yīng)用系統(tǒng)帶來更好的用戶體驗(yàn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-653357.html

到了這里,關(guān)于Spring WebSocket實(shí)現(xiàn)實(shí)時(shí)通信,構(gòu)建高可靠的實(shí)時(shí)交互系統(tǒng)的文章就介紹完了。如果您還想了解更多內(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)文章

  • Spring Boot進(jìn)階(49):實(shí)時(shí)通信不再是夢(mèng)想,SpringBoot+WebSocket助你輕松實(shí)現(xiàn)前后端即時(shí)通訊!

    Spring Boot進(jìn)階(49):實(shí)時(shí)通信不再是夢(mèng)想,SpringBoot+WebSocket助你輕松實(shí)現(xiàn)前后端即時(shí)通訊!

    ????????在上一期,我對(duì)WebSocket進(jìn)行了基礎(chǔ)及理論知識(shí)普及學(xué)習(xí),WebSocket是一種基于TCP協(xié)議實(shí)現(xiàn)的全雙工通信協(xié)議,使用它可以實(shí)現(xiàn)實(shí)時(shí)通信,不必?fù)?dān)心HTTP協(xié)議的短連接問題。Spring Boot作為一款微服務(wù)框架,也提供了輕量級(jí)的WebSocket集成支持,本文將介紹如何在Spring Boot項(xiàng)

    2024年02月11日
    瀏覽(21)
  • 使用React 18和WebSocket構(gòu)建實(shí)時(shí)通信功能

    WebSocket 是一種在 Web 應(yīng)用中實(shí)現(xiàn)雙向通信的協(xié)議。它允許服務(wù)器主動(dòng)向客戶端推送數(shù)據(jù),而不需要客戶端發(fā)起請(qǐng)求。在現(xiàn)代的實(shí)時(shí)應(yīng)用中, WebSocket 經(jīng)常用于實(shí)時(shí)數(shù)據(jù)傳輸、聊天功能、實(shí)時(shí)通知和多人協(xié)作等場(chǎng)景。在本篇博客中,我們將探索如何在 React 18 應(yīng)用中使用 WebSocke

    2024年02月05日
    瀏覽(23)
  • AI對(duì)話交互場(chǎng)景使用WebSocket建立H5客戶端和服務(wù)端的信息實(shí)時(shí)雙向通信

    AI對(duì)話交互場(chǎng)景使用WebSocket建立H5客戶端和服務(wù)端的信息實(shí)時(shí)雙向通信

    WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許 服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù) 。在WebSocket API中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。 初次接觸 WebSocket 的人,都會(huì)問同樣的問題:我們已經(jīng)有了 HT

    2024年02月03日
    瀏覽(24)
  • 分布式websocket即時(shí)通信(IM)系統(tǒng)保證消息可靠性【第八期】

    分布式websocket即時(shí)通信(IM)系統(tǒng)保證消息可靠性【第八期】

    b站上面本期視頻版本,觀看視頻食用更佳!點(diǎn)擊即可跳轉(zhuǎn),找不到視頻可以直接搜索我 目前叫 呆呆呆呆夢(mèng) 目前已經(jīng)寫的文章有。并且有對(duì)應(yīng)視頻版本。 git項(xiàng)目地址 【IM即時(shí)通信系統(tǒng)(企聊聊)】點(diǎn)擊可跳轉(zhuǎn) sprinboot單體項(xiàng)目升級(jí)成springcloud項(xiàng)目 【第一期】 前端項(xiàng)目技術(shù)選型

    2024年01月22日
    瀏覽(22)
  • js和java交互websocket實(shí)現(xiàn)實(shí)時(shí)聊天

    js和java交互websocket實(shí)現(xiàn)實(shí)時(shí)聊天

    目錄 1.運(yùn)用場(chǎng)景(實(shí)現(xiàn)效果): ?2.代碼及其講解: js配置: (1)時(shí)間判斷函數(shù): (2)建立ws連接: 結(jié)束! ????????前端運(yùn)用原生js來與后端提供的ws進(jìn)行交互,實(shí)現(xiàn)在線實(shí)時(shí)聊天,離線儲(chǔ)存數(shù)據(jù)方便讀取聊天記錄的效果,效果圖如下: (1)時(shí)間判斷函數(shù): (2)建立ws連接:

    2024年02月12日
    瀏覽(35)
  • 實(shí)時(shí)通信應(yīng)用的開發(fā):Vue.js、Spring Boot 和 WebSocket 整合實(shí)踐

    實(shí)時(shí)通信應(yīng)用的開發(fā):Vue.js、Spring Boot 和 WebSocket 整合實(shí)踐

    目錄 1.?什么是webSocket? 2.?webSocket可以用來做什么? 3.?webSocket協(xié)議 4. 服務(wù)器端 5. 客戶端 6. 測(cè)試通訊 WebSocket 是一種在單個(gè) TCP連接 上進(jìn)行全雙工通信的協(xié)議。WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允 許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù) 。在WebSocket API中,瀏覽

    2024年02月11日
    瀏覽(26)
  • webSocket及使用webSocket實(shí)現(xiàn)實(shí)時(shí)聊天通信

    webSocket及使用webSocket實(shí)現(xiàn)實(shí)時(shí)聊天通信

    webSocket在開始的時(shí)候依舊使用的是http協(xié)議,只不過后面保持tcp持久鏈接,是一種全雙工通信。webSockets和http很像,它的請(qǐng)求url用的是ws、wss,對(duì)應(yīng)http、https 初始化 npm init -y 安裝ws依賴 npm i --save ws 寫服務(wù)器代碼 服務(wù)器啟動(dòng) node server.js 配置前端代碼,即告訴瀏覽器這個(gè)請(qǐng)求不要

    2023年04月11日
    瀏覽(28)
  • SpringBoot(java)實(shí)現(xiàn)websocket實(shí)現(xiàn)實(shí)時(shí)通信

    SpringBoot(java)實(shí)現(xiàn)websocket實(shí)現(xiàn)實(shí)時(shí)通信

    WebSockets是一種在Web應(yīng)用程序中實(shí)現(xiàn)實(shí)時(shí)通信的技術(shù)。它允許客戶端和服務(wù)器之間建立持久的、雙向的通信通道,從而使得服務(wù)器可以實(shí)時(shí)向客戶端推送數(shù)據(jù),而不需要客戶端不斷地向服務(wù)器發(fā)起請(qǐng)求。這種實(shí)時(shí)通信的能力對(duì)于需要即時(shí)更新數(shù)據(jù)的應(yīng)用程序非常有用,比如在線

    2024年04月29日
    瀏覽(30)
  • 進(jìn)度變動(dòng)實(shí)時(shí)通知-使用SocketIO實(shí)現(xiàn)前后端的通信(基于WebSocket的實(shí)時(shí)通信庫)

    進(jìn)度變動(dòng)實(shí)時(shí)通知-使用SocketIO實(shí)現(xiàn)前后端的通信(基于WebSocket的實(shí)時(shí)通信庫)

    最近在接觸的一個(gè)項(xiàng)目,將PDF上傳到項(xiàng)目里,通過調(diào)用OCR云服務(wù)把PDF里的表格數(shù)據(jù)識(shí)別出來。在此過程中,前后端需要實(shí)時(shí)通信,對(duì)識(shí)別數(shù)據(jù)進(jìn)行“進(jìn)度跟蹤”。因此我們采用SocketIO的通訊方式,識(shí)別中前端和后端服務(wù)建立SocketIO連接,根據(jù)事件進(jìn)行數(shù)據(jù)的實(shí)時(shí)更新百分比進(jìn)度

    2024年02月06日
    瀏覽(26)
  • 集成websocket實(shí)現(xiàn)實(shí)時(shí)通信(ruoyi 使用筆記)

    集成websocket實(shí)現(xiàn)實(shí)時(shí)通信(ruoyi 使用筆記)

    Websocket 是一種基于 TCP 協(xié)議的全雙工通信協(xié)議,它使得客戶端和服務(wù)器之間可以進(jìn)行實(shí)時(shí)的雙向通信。相對(duì)于傳統(tǒng)的 HTTP 協(xié)議只能通過客戶端發(fā)送請(qǐng)求,然后等待服務(wù)端的響應(yīng),WebSocket 可以讓客戶端和服務(wù)器在任何時(shí)候都可以相互發(fā)送消息,這種實(shí)時(shí)通信的方式非常適合需要

    2024年02月07日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包