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

JavaWeb-WebSocket瀏覽器服務(wù)器雙向通信

這篇具有很好參考價值的文章主要介紹了JavaWeb-WebSocket瀏覽器服務(wù)器雙向通信。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。


一、概述

WebSocket是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信—瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。

HTTP傳輸

JavaWeb-WebSocket瀏覽器服務(wù)器雙向通信,JavaWeb,websocket,服務(wù)器,網(wǎng)絡(luò)協(xié)議

WebSocket傳輸

JavaWeb-WebSocket瀏覽器服務(wù)器雙向通信,JavaWeb,websocket,服務(wù)器,網(wǎng)絡(luò)協(xié)議

HTTP協(xié)議和WebSocket協(xié)議的對比:

  • HTTP是短連接,WebSocket是長連接
  • HTTP通信是單向的,基于請求響應(yīng)模式,WebSocket支持雙向通信。
  • HTTP和WebSocket底層都是TCP連接

WebSocket應(yīng)用場景:文章來源地址http://www.zghlxwxcb.cn/news/detail-811232.html

  • 視頻彈幕
  • 網(wǎng)頁聊天
  • 體育實(shí)況更新
  • 股票基金報價實(shí)時更新

二、入門

2.1 POM依賴

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

2.2 編寫配置類

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * WebSocket配置類,用于注冊WebSocket的Bean
 */
@Configuration
public class WebSocketConfiguration {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }

}

2.3 編寫WebSocket服務(wù)

import org.springframework.stereotype.Component;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * WebSocket服務(wù)
 */
@Component
@ServerEndpoint("/ws/{sid}")
public class WebSocketServer {

    //存放會話對象
    private static Map<String, Session> sessionMap = new HashMap();

    /**
     * 連接建立成功調(diào)用的方法
     */
    @OnOpen
    public void onOpen(Session session, @PathParam("sid") String sid) {
        System.out.println("客戶端:" + sid + "建立連接");
        sessionMap.put(sid, session);
    }

    /**
     * 收到客戶端消息后調(diào)用的方法
     *
     * @param message 客戶端發(fā)送過來的消息
     */
    @OnMessage
    public void onMessage(String message, @PathParam("sid") String sid) {
        System.out.println("收到來自客戶端:" + sid + "的信息:" + message);
    }

    /**
     * 連接關(guān)閉調(diào)用的方法
     *
     * @param sid
     */
    @OnClose
    public void onClose(@PathParam("sid") String sid) {
        System.out.println("連接斷開:" + sid);
        sessionMap.remove(sid);
    }

    /**
     * 群發(fā)
     *
     * @param message
     */
    public void sendToAllClient(String message) {
        Collection<Session> sessions = sessionMap.values();
        for (Session session : sessions) {
            try {
                //服務(wù)器向客戶端發(fā)送消息
                session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

2.4 瀏覽器頁面

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket Demo</title>
</head>
<body>
    <input id="text" type="text" />
    <button onclick="send()">發(fā)送消息</button>
    <button onclick="closeWebSocket()">關(guān)閉連接</button>
    <div id="message">
    </div>
</body>
<script type="text/javascript">
    var websocket = null;
    var clientId = Math.random().toString(36).substr(2);

    //判斷當(dāng)前瀏覽器是否支持WebSocket
    if('WebSocket' in window){
        //連接WebSocket節(jié)點(diǎn)
        websocket = new WebSocket("ws://localhost:8080/ws/"+clientId);
    }
    else{
        alert('Not support websocket')
    }

    //連接發(fā)生錯誤的回調(diào)方法
    websocket.onerror = function(){
        setMessageInnerHTML("error");
    };

    //連接成功建立的回調(diào)方法
    websocket.onopen = function(){
        setMessageInnerHTML("連接成功");
    }

    //接收到消息的回調(diào)方法
    websocket.onmessage = function(event){
        setMessageInnerHTML(event.data);
    }

    //連接關(guān)閉的回調(diào)方法
    websocket.onclose = function(){
        setMessageInnerHTML("close");
    }

    //監(jiān)聽窗口關(guān)閉事件,當(dāng)窗口關(guān)閉時,主動去關(guān)閉websocket連接,防止連接還沒斷開就關(guān)閉窗口,server端會拋異常。
    window.onbeforeunload = function(){
        websocket.close();
    }

    //將消息顯示在網(wǎng)頁上
    function setMessageInnerHTML(innerHTML){
        document.getElementById('message').innerHTML += innerHTML + '<br/>';
    }

    //發(fā)送消息
    function send(){
        var message = document.getElementById('text').value;
        websocket.send(message);
    }
	
	//關(guān)閉連接
    function closeWebSocket() {
        websocket.close();
    }
</script>
</html>

到了這里,關(guān)于JavaWeb-WebSocket瀏覽器服務(wù)器雙向通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 為chrome瀏覽器單獨(dú)設(shè)置代理服務(wù)器

    為chrome瀏覽器單獨(dú)設(shè)置代理服務(wù)器

    默認(rèn)的chrome瀏覽器的代理服務(wù)器都是采用的PC設(shè)置, 但是有的時候在某一些情況下我們不希望使用PC的設(shè)置, 懂得都懂,那就需要讓chrome不走PC的代理 只要下載一個chrome的插件, proxyswitchOmega, 然后設(shè)置好代理,enable這個插件就可以了 插件下載地址國內(nèi)的可以用如下地址:

    2024年02月11日
    瀏覽(95)
  • 電腦有網(wǎng)但是瀏覽器無法連接到服務(wù)器

    電腦有網(wǎng)但是瀏覽器無法連接到服務(wù)器

    一、將服務(wù)器的IP地址和DNS地址設(shè)置為自動獲取 。 1、鼠標(biāo)右鍵點(diǎn)擊網(wǎng)絡(luò),打開“網(wǎng)絡(luò)和Internet設(shè)置” ?2、打開“更改適配器選項” 3、選擇電腦此時連接的網(wǎng)絡(luò),右鍵點(diǎn)擊選擇“ 屬性 ” ?4、雙擊選擇 Internet協(xié)議版本4(TCP/IPv4) 5、將下面這兩項都選為 自動獲得。 ? ?5、一路點(diǎn)

    2024年02月05日
    瀏覽(95)
  • 使用ssh隧道連接遠(yuǎn)程服務(wù)器本地瀏覽器上網(wǎng)

    使用ssh隧道連接遠(yuǎn)程服務(wù)器本地瀏覽器上網(wǎng)

    1,終端輸入命令 ssh -N -D 127.0.0.1:8080 remote_server_name@remote_server_ip_address remote_server_name 參數(shù)是遠(yuǎn)程服務(wù)器的用戶名 remote_server_ip_address 參數(shù)是遠(yuǎn)程服務(wù)器的IP地址 -N 參數(shù)表示只建立 SSH 連接,而不啟動遠(yuǎn)程 shell。通常用于只想建立端口轉(zhuǎn)發(fā)或隧道的情況下,以避免不必要的遠(yuǎn)程

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

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

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

    2024年02月14日
    瀏覽(21)
  • 服務(wù)器上配置jupyter并使用瀏覽器遠(yuǎn)程連接

    服務(wù)器上配置jupyter并使用瀏覽器遠(yuǎn)程連接

    執(zhí)行兩條安裝命令: 通過這個命令創(chuàng)建就在**~/.jupyter/**下面生成了配置文件jupyter_notebook_config.py 輸入的密碼會保存到 .jupyter/jupyter_notebook_config.json文件中 在配置文件~/.jupyter/jupyter_notebook_config.py中找到下面幾行修改并且取消注釋 建立一個目錄workspace作為jupyter的工作環(huán)境,并啟

    2024年02月09日
    瀏覽(23)
  • nodejs配置express服務(wù)器,運(yùn)行自動打開瀏覽器

    nodejs配置express服務(wù)器,運(yùn)行自動打開瀏覽器

    查看專欄目錄 Network 灰鴿寶典專欄主要關(guān)注服務(wù)器的配置,前后端開發(fā)環(huán)境的配置,編輯器的配置,網(wǎng)絡(luò)服務(wù)的配置,網(wǎng)絡(luò)命令的應(yīng)用與配置,windows常見問題的解決等。 作為前端開發(fā)的項目,有的時候打包完后就想在本地測試是什么樣子的,另外一些如cesium等程序,需要在

    2024年02月04日
    瀏覽(23)
  • 云服務(wù)器配合CookieCloud插件,實(shí)現(xiàn)瀏覽器網(wǎng)站Cookie同步

    云服務(wù)器配合CookieCloud插件,實(shí)現(xiàn)瀏覽器網(wǎng)站Cookie同步

    ? CookieCloud是由方糖開發(fā)的一個瀏覽器網(wǎng)站Cookie同步工具,Cookie是一個可以短時間代表我們登錄身份的憑證,CookieCloud同步Cookie其實(shí)就是在同步登錄狀態(tài),由一個瀏覽器插件和一個可以自行搭建的服務(wù)器端組成,可以定時地、在本地加密后把Cookie傳輸?shù)椒?wù)器,然后就可以在很

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

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

    2024年02月21日
    瀏覽(19)
  • 本地瀏覽器查看--服務(wù)器上運(yùn)行的可視化,如tensorboard

    特別提醒 :注意看 本地 端和 服務(wù)器 端 解釋 :將服務(wù)器的6008端口 映射 到本地的6008端口,-p? 443? 是你服務(wù)器上的IP后面緊跟的那個端口,root是自己的服務(wù)器名字 參考: 在遠(yuǎn)程服務(wù)器上使用tensorboard方法_tensorboard遠(yuǎn)程服務(wù)器-CSDN博客 本地查看服務(wù)器端運(yùn)行的Tensorboard方法

    2024年01月16日
    瀏覽(24)
  • 在外web瀏覽器遠(yuǎn)程訪問jupyter notebook服務(wù)器詳細(xì)教程

    在外web瀏覽器遠(yuǎn)程訪問jupyter notebook服務(wù)器詳細(xì)教程

    Jupyter Notebook,它是一個交互式的數(shù)據(jù)科學(xué)和計算環(huán)境,支持多種編程語言,如Python、R、Julia等。它在數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、教育和文檔編寫等領(lǐng)域都有很廣泛的應(yīng)用。 重要的是,Jupyter Notebook可以在Web瀏覽器中使用,所以我們可以在服務(wù)器端開啟服務(wù),在外通過網(wǎng)

    2024年02月12日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包