socket.io的使用

為什么要用socket.io進行通信

Browser和WebServer間的實時數據傳輸是一個很重要的需求致开,但最早只能通過AJAX輪詢方式實現

幾種長連接的通信方式

輪詢:客戶端定時向服務器發(fā)送Ajax請求甲雅,服務器接到請求后馬上返回響應信息并關閉連接解孙。

優(yōu)點:后端程序編寫比較容易。
  缺點:請求中有大半是無用抛人,浪費帶寬和服務器資源弛姜。(而每一次的 HTTP 請求和應答都帶有完整的 HTTP 頭信息,這就增加了每次傳輸的數據量)
  實例:適于小型應用妖枚。

長輪詢:客戶端向服務器發(fā)送Ajax請求廷臼,服務器接到請求后hold住連接,直到有新消息才返回響應信息并關閉連接(或到了設定的超時時間關閉連接)绝页,客戶端處理完響應信息后再向服務器發(fā)送新的請求荠商。

優(yōu)點:在無消息的情況下不會頻繁的請求,節(jié)省了網絡流量续誉,解決了服務端一直疲于接受請求的窘境
  缺點:服務器hold連接會消耗資源莱没,需要同時維護多個線程,服務器所能承載的TCP連接數是有上限的,這種輪詢很容易把連接數頂滿。
  實例:WebQQ背苦、Hi網頁版禀忆、Facebook IM。

長連接:在頁面里嵌入一個隱蔵iframe芙代,將這個隱蔵iframe的src屬性設為對一個長連接的請求,服務器端就能源源不斷地往客戶端輸入數據。

優(yōu)點:消息即時到達寄狼,不發(fā)無用請求。
  缺點:服務器維護一個長連接會增加開銷氨淌。
  實例:Gmail聊天

Flash Socket:在頁面中內嵌入一個使用了Socket類的 Flash 程序JavaScript通過調用此Flash程序提供的Socket接口與服務器端的Socket接口進行通信例嘱,JavaScript在收到服務器端傳送的信息后控制頁面的顯示。

優(yōu)點:實現真正的即時通信宁舰,而不是偽即時拼卵。
  缺點:客戶端必須安裝Flash插件;非HTTP協(xié)議蛮艰,無法自動穿越防火墻腋腮。
  實例:網絡互動游戲。

WebSocket:

WebSocket 協(xié)議本質上是一個基于 TCP 的協(xié)議。為了建立一個 WebSocket 連接即寡,客戶端瀏覽器首先要向服務器發(fā)起一個 HTTP 請求徊哑,這個請求和通常的 HTTP 請求不同,包含了一些附加頭信息聪富,其中附加頭信息”Upgrade: WebSocket”表 明這是一個申請協(xié)議升級的 HTTP 請求莺丑,服務器端解析這些附加的頭信息然后產生應答信息返回給客戶端,客戶端和服務器端的 WebSocket 連接就建立起來了墩蔓,雙方就可以通過這個連接通道自由的傳遞信息梢莽,并且這個連接會持續(xù)存在直到客戶端或者服務器端的某一方主動的關閉連接。

socket.io的使用(socket.io使用三部曲)

1奸披,通過io來實現server與client的連接

const socket = io('服務器地址', {  
                query: `username=參數`
            });

2昏名,通過emit發(fā)送消息

socketclient.emit("student", {"roomID":clientRoomID,"textMessage": "hello"});   

3,通過on來監(jiān)聽emit事件

 socket.on( 'server',(data)=>{
    console.log(data,"通過監(jiān)聽server/course/start字段得到的數據")
}

關于參數:第一個參數是前后端 約定好的長連接地址或發(fā)送接受事件的字段,第二個參數是 將要發(fā)送或接收的數據

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末阵面,一起剝皮案震驚了整個濱河市轻局,隨后出現的幾起案子,更是在濱河造成了極大的恐慌样刷,老刑警劉巖仑扑,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異置鼻,居然都是意外死亡夫壁,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門沃疮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盒让,“玉大人,你說我怎么就攤上這事司蔬∫厍眩” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵俊啼,是天一觀的道長肺缕。 經常有香客問我,道長授帕,這世上最難降的妖魔是什么同木? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮跛十,結果婚禮上彤路,老公的妹妹穿的比我還像新娘。我一直安慰自己芥映,他們只是感情好洲尊,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布远豺。 她就那樣靜靜地躺著,像睡著了一般坞嘀。 火紅的嫁衣襯著肌膚如雪躯护。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天丽涩,我揣著相機與錄音棺滞,去河邊找鬼。 笑死矢渊,一個胖子當著我的面吹牛继准,可吹牛的內容都是我干的。 我是一名探鬼主播昆淡,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼锰瘸,長吁一口氣:“原來是場噩夢啊……” “哼刽严!你這毒婦竟也來了昂灵?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤舞萄,失蹤者是張志新(化名)和其女友劉穎眨补,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體倒脓,經...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡撑螺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了崎弃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甘晤。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖饲做,靈堂內的尸體忽然破棺而出线婚,到底是詐尸還是另有隱情,我是刑警寧澤盆均,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布塞弊,位于F島的核電站,受9級特大地震影響泪姨,放射性物質發(fā)生泄漏游沿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一肮砾、第九天 我趴在偏房一處隱蔽的房頂上張望诀黍。 院中可真熱鬧,春花似錦仗处、人聲如沸蔗草。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咒精。三九已至镶柱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間模叙,已是汗流浹背歇拆。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留范咨,地道東北人故觅。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像渠啊,于是被迫代替她去往敵國和親输吏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容

  • 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-WebSo...
    敢夢敢當閱讀 8,885評論 0 50
  • 原文地址:關于socket.io的使用 這段時間學習了socket.io替蛉,用它寫了小項目贯溅,在此總結下它的基本使用方...
    jeffzhong閱讀 6,006評論 0 4
  • 簡單介紹一下如何在nodejs上使用socket.io,以下栗子來自官網躲查,細節(jié)上有點小修改它浅。 scoket基本知識...
    pixels閱讀 11,830評論 1 8
  • Socket.io提供了基于事件的實時雙向通訊 Browser和WebServer間的實時數據傳輸是一個很重要的需...
    JunChow520閱讀 93,930評論 14 97
  • 昨天的雨將塵埃除卻,今天是入職小米之家的第一天镣煮,原以為討厭的雨天會延續(xù)到今天姐霍,未曾想迎接來的是朝陽,滿滿的正能量…...
    江湖一只羊閱讀 144評論 0 0