013-WebSocket

WebSocket為瀏覽器和服務(wù)端提供了雙方異步通信的功能堪侯,讓瀏覽器可以向服務(wù)端發(fā)送消息,服務(wù)端也可以向?yàn)g覽器發(fā)送消息荔仁。WebSocket需要瀏覽器的支持伍宦,如IE10+芽死、Chrome13+、Firefox6+等次洼,這對(duì)于我們現(xiàn)在的瀏覽器來(lái)說(shuō)都不是問(wèn)題关贵。


WebSocket是通過(guò)一個(gè)socket來(lái)實(shí)現(xiàn)雙工異步通信能力的,但是直接使用WebSocket(或者SockJS:WebSocket的模擬卖毁,增加了當(dāng)瀏覽器不支持WebSocket的時(shí)候的兼容支持)協(xié)議開(kāi)發(fā)程序過(guò)于繁瑣揖曾,可以使用自斜陽(yáng)STOMP,它是一個(gè)更高級(jí)別的協(xié)議亥啦,STOMP協(xié)議使用一個(gè)基于幀(frame)的格式來(lái)定義消息炭剪,與HTTP的request和response類似(具有類似于@RequestMapping和@MessageMapping)。


首先新建一個(gè)項(xiàng)目禁悠,添加WebSocket依賴:



廣播式

即服務(wù)端有消息時(shí)念祭,會(huì)將消息發(fā)送給所有連接了當(dāng)前endpoint的瀏覽器。

(1)配置WebSocket碍侦,需要在配置類上使用@EnableWebSocketMessageBroker 開(kāi)啟WebSocket支持,并通過(guò)繼承AbstractWebSocketMessageBrokerConfigurer類隶糕,重寫(xiě)其方法來(lái)配置WebSocket瓷产。如圖:


(2)瀏覽器向服務(wù)端發(fā)送的消息用此類接受:


(3)服務(wù)端向?yàn)g覽器發(fā)送的此類的消息:


(4)演示控制器


(5)添加腳本。將stomp.min.js(STOMP協(xié)議的客戶端腳本)枚驻、sockjs.min.js(SockJS的客戶端腳本)以及jQuery放置在src/main/resources/static 目錄下濒旦。可以自行下載這些腳本文件再登。

(6)演示頁(yè)面尔邓。在 src/main/resources/templates 目錄下新建ws.html文件,代碼如下:



(7)配置Controller锉矢,為ws.html提供便捷的路徑映射:


(8)運(yùn)行梯嗽。廣播的預(yù)期效果是,一個(gè)瀏覽器發(fā)送消息沽损,多個(gè)瀏覽器都能接收到返回消息〉平冢現(xiàn)在開(kāi)啟三個(gè)瀏覽器,并連接:


現(xiàn)在在第一個(gè)里面發(fā)送名字绵估,


可以看到炎疆,所有瀏覽器都接收到了返回的消息!




點(diǎn)對(duì)點(diǎn)式

廣播式應(yīng)用廣泛国裳,但是不能解決消息誰(shuí)發(fā)送誰(shuí)接收的問(wèn)題形入,因此需要點(diǎn)對(duì)點(diǎn)的消息推送模式。

(1)下面演示一個(gè)聊天室缝左,需要兩個(gè)用戶亿遂。因?yàn)橛脩粝嚓P(guān)螟蒸,所以引入security:


(2)加入security簡(jiǎn)單配置,不做過(guò)多說(shuō)明崩掘,只在代碼中注釋解釋有用的部分:


(3)配置WebSocket:


(4)控制器七嫌。在WsController內(nèi)增加如下代碼:


(5)登錄頁(yè)面。在 src/main/resources/templates下新建 login.html苞慢,如下:


(6)聊天頁(yè)面诵原。在src/main/resources/templates下新建chat.html頁(yè)面,如下:


(7)增加頁(yè)面的viewController:


(8)運(yùn)行挽放。首先進(jìn)入登錄頁(yè)面绍赛,兩個(gè)用戶各自登錄,如圖:


登錄成功辑畦,進(jìn)入聊天室吗蚌,如圖:


現(xiàn)在分別互相發(fā)送消息,可以看到各自都能接收纯出,如圖:


這就是基于點(diǎn)對(duì)點(diǎn)的消息模式蚯妇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市暂筝,隨后出現(xiàn)的幾起案子箩言,更是在濱河造成了極大的恐慌,老刑警劉巖焕襟,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陨收,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸵赖,警方通過(guò)查閱死者的電腦和手機(jī)务漩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)它褪,“玉大人饵骨,你說(shuō)我怎么就攤上這事×惺辏” “怎么了宏悦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)包吝。 經(jīng)常有香客問(wèn)我饼煞,道長(zhǎng),這世上最難降的妖魔是什么诗越? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任砖瞧,我火速辦了婚禮,結(jié)果婚禮上嚷狞,老公的妹妹穿的比我還像新娘块促。我一直安慰自己荣堰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布竭翠。 她就那樣靜靜地躺著振坚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斋扰。 梳的紋絲不亂的頭發(fā)上渡八,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音传货,去河邊找鬼屎鳍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛问裕,可吹牛的內(nèi)容都是我干的逮壁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粮宛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼窥淆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起窟勃,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤祖乳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后秉氧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜒秤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年汁咏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片作媚。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡攘滩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纸泡,到底是詐尸還是另有隱情漂问,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布女揭,位于F島的核電站蚤假,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吧兔。R本人自食惡果不足惜磷仰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望境蔼。 院中可真熱鬧灶平,春花似錦伺通、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瞒爬,卻和暖如春弓柱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疮鲫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工吆你, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俊犯。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓妇多,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親燕侠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子者祖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 0×1.RIP主要特征RIP(Routing Information Protocol,路由信息協(xié)議)绢彤,是早期應(yīng)用...
    Zero___閱讀 2,985評(píng)論 0 1
  • 導(dǎo)語(yǔ):知識(shí)重在分享 前提:做好事情需要你懂里面的基本知識(shí)(javascript怎么用你都不知道七问,那你在咋寫(xiě)?) 其...
    Nenezsnp閱讀 470評(píng)論 0 0
  • 2017.8.28 12:08 廈門 晴 坐在床邊茫舶,面對(duì)窗戶械巡,嗯,雖然外面陽(yáng)光炙熱饶氏,但是16樓的風(fēng)還是挺涼的讥耗。...
    一朵小紅花啊閱讀 471評(píng)論 0 3
  • 如果真有不幸,那便是疹启,有愛(ài)而無(wú)處安放古程。無(wú)愛(ài)呢?噢喊崖,那便連不幸的資格也丟掉了挣磨。我們的心不是石頭,所以荤懂,世界那...
    心的字閱讀 166評(píng)論 0 0
  • “可能人家想吃葡萄茁裙,而你卻一直給蘋(píng)果和梨,多少讓人不適势誊∥卮铮”8年前,我大學(xué)同學(xué)曾經(jīng)也說(shuō)過(guò)這樣的話粟耻,大概他喜歡...
    小倩520閱讀 1,355評(píng)論 1 4