本文原文由作者Amazing10原創(chuàng)發(fā)布于公眾號(hào)業(yè)余碼農(nóng),收錄時(shí)有改動(dòng),感謝原作者的技術(shù)分享。
1、引言
某天中午,吃完午飯,攤在自己的躺椅上,想趁吃飽喝足的午后時(shí)間靜靜享受獨(dú)自的靜謐。
干點(diǎn)什么好呢?于是單手操作鼠標(biāo)打開(kāi)了一個(gè)陌生而隱秘的網(wǎng)站。正開(kāi)著某個(gè)視頻起勁。。。
突然瀏覽器彈出了一個(gè)提示:
請(qǐng)使用微信掃碼登錄賬號(hào),繼續(xù)觀看
這...
但是由于強(qiáng)烈的好奇驅(qū)使,迫于無(wú)奈,只好選擇登錄再繼續(xù)觀看。于是熟練的掏出手機(jī),打開(kāi)微信掃一掃對(duì)準(zhǔn)上面的二維碼,只聽(tīng)見(jiàn) “叮” 的一聲,網(wǎng)頁(yè)上的二維碼放佛活過(guò)來(lái)了,直接刷新出了本尊的微信頭像,同時(shí)手機(jī)上也彈出登錄的提醒。
心中略微驚嘆,但沒(méi)來(lái)得及多想。忙點(diǎn)擊手機(jī)界面中登錄按鈕。此時(shí)網(wǎng)頁(yè)刷新,恢復(fù)了正常,表示可以繼續(xù)觀看。
上網(wǎng)沖浪的時(shí)間總是過(guò)得很快,很快就有些疲倦。于是閉上眼睛,腦海中卻浮現(xiàn)出了剛剛微信掃描二維碼,然后登錄網(wǎng)頁(yè)的場(chǎng)景,心中再次驚嘆,并開(kāi)始思考起其中的原理來(lái)。。。
言歸正傳,本文將以輕松活潑的語(yǔ)言形式,為你分析和講解微信手機(jī)掃碼登錄的技術(shù)原理,希望在你的IM中開(kāi)發(fā)此功能時(shí)有所啟發(fā)。
推薦閱讀:另一篇同類文章《IM的掃碼登錄功能如何實(shí)現(xiàn)?一文搞懂主流的掃碼登錄技術(shù)原理》也值得一讀。
學(xué)習(xí)交流:
- 即時(shí)通訊/推送技術(shù)開(kāi)發(fā)交流5群:215477170[推薦]
- 移動(dòng)端IM開(kāi)發(fā)入門文章:《新手入門一篇就夠:從零開(kāi)發(fā)移動(dòng)端IM》
(本文同步發(fā)布于:http://www.52im.net/thread-2941-1-1.html)
2、IM開(kāi)發(fā)干貨系列文章
本文是系列文章中的第23篇,總目錄如下:
《IM消息送達(dá)保證機(jī)制實(shí)現(xiàn)(一):保證在線實(shí)時(shí)消息的可靠投遞》
《IM消息送達(dá)保證機(jī)制實(shí)現(xiàn)(二):保證離線消息的可靠投遞》
《如何保證IM實(shí)時(shí)消息的“時(shí)序性”與“一致性”?》
《IM單聊和群聊中的在線狀態(tài)同步應(yīng)該用“推”還是“拉”?》
《IM群聊消息如此復(fù)雜,如何保證不丟不重?》
《一種Android端IM智能心跳算法的設(shè)計(jì)與實(shí)現(xiàn)探討(含樣例代碼)》
《移動(dòng)端IM登錄時(shí)拉取數(shù)據(jù)如何作到省流量?》
《通俗易懂:基于集群的移動(dòng)端IM接入層負(fù)載均衡方案分享》
《淺談移動(dòng)端IM的多點(diǎn)登錄和消息漫游原理》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(一):正確理解前置HTTP SSO單點(diǎn)登錄接口的原理》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(二):如何設(shè)計(jì)大量圖片文件的服務(wù)端存儲(chǔ)架構(gòu)?》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(三):快速理解服務(wù)端數(shù)據(jù)庫(kù)讀寫分離原理及實(shí)踐建議》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(四):正確理解HTTP短連接中的Cookie、Session和Token》
《IM群聊消息的已讀回執(zhí)功能該怎么實(shí)現(xiàn)?》
《IM群聊消息究竟是存1份(即擴(kuò)散讀)還是存多份(即擴(kuò)散寫)?》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(五):通俗易懂,正確理解并用好MQ消息隊(duì)列》
《一個(gè)低成本確保IM消息時(shí)序的方法探討》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(六):數(shù)據(jù)庫(kù)用NoSQL還是SQL?讀這篇就夠了!》
《IM里“附近的人”功能實(shí)現(xiàn)原理是什么?如何高效率地實(shí)現(xiàn)它?》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(七):主流移動(dòng)端賬號(hào)登錄方式的原理及設(shè)計(jì)思路》
《IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(八):史上最通俗,徹底搞懂字符亂碼問(wèn)題的本質(zhì)》
《IM的掃碼登功能如何實(shí)現(xiàn)?一文搞懂主流應(yīng)用的掃碼登錄技術(shù)原理》
《IM要做手機(jī)掃碼登陸?先看看微信的掃碼登錄功能技術(shù)原理》(本文)
3、原理解析
微信掃碼登錄現(xiàn)在在日常生活中已經(jīng)是常見(jiàn)不能再常見(jiàn)的場(chǎng)景之一了,但是要知道微信首次公開(kāi)這項(xiàng)功能時(shí),卻是驚艷眾人。移動(dòng)端與PC端以這樣一種巧妙的方式鏈接在了一起,的確是讓人驚嘆。
以下是一個(gè)典型的微信掃碼登錄全過(guò)程:
本來(lái)想在Web版微信上截圖,但掃碼登陸后出現(xiàn)了下面的提示(貌似很多人都碰到過(guò)):
好吧,這很微信,反正就是不想讓你好好用,用戶愛(ài)咋咋滴。。。
如上圖所示,操作過(guò)程如下:
1)第一步:電腦上打開(kāi)PC端(出現(xiàn)2維碼);
2)第二步:拿出手機(jī),掃碼2維碼;
3)第三步:PC端顯示掃碼成功;
4)第四步:手機(jī)端“確認(rèn)”登錄;
5)第五步:成功登陸PC端。
上述實(shí)際操作過(guò)程,用戶體驗(yàn)相當(dāng)順滑,也難怪剛出來(lái)那會(huì),能驚艷到很多人。
那么,對(duì)于上述操作過(guò)程的技術(shù)實(shí)現(xiàn)原理是什么樣的呢?
想起來(lái)之前聽(tīng)過(guò)的前后端的概念,知道賬戶的數(shù)據(jù)信息一般都是放在服務(wù)器上,前端負(fù)責(zé)向后端 “討要數(shù)據(jù)” 并顯示,后端則是對(duì)前端的 “討要” 做出反應(yīng)。
這樣一來(lái),猜測(cè)微信登錄的過(guò)程可能就是:
1)網(wǎng)頁(yè)前端向微信后臺(tái)請(qǐng)求賬號(hào)數(shù)據(jù);
2)微信后臺(tái)接受網(wǎng)頁(yè)前端的請(qǐng)求,然后將他的賬號(hào)數(shù)據(jù)返回;
3)網(wǎng)頁(yè)前端接收到了數(shù)據(jù)后,在瀏覽器里進(jìn)行顯示。
于是,手腳麻利的畫了個(gè)示意圖:
當(dāng)我正準(zhǔn)備沾沾自喜的時(shí)候,突然看到桌面上的手機(jī)。咦,如果就只是這么個(gè)過(guò)程,那手機(jī)的作用是啥。于是才開(kāi)始意識(shí)到,問(wèn)題沒(méi)這么簡(jiǎn)單。
好吧,我們城要再深入一點(diǎn)探秘微信掃碼登錄的過(guò)程。
4、過(guò)程分析
為了更深入的分析整個(gè)過(guò)程,我們可以去看看微信網(wǎng)頁(yè)版,地址是:https://wx.qq.com/。
筆者看著網(wǎng)頁(yè)中碩大的二維碼陷入了沉思——這個(gè)二維碼跟手機(jī)賬號(hào)有沒(méi)有什么對(duì)應(yīng)關(guān)系呢?如果沒(méi)有,那它又是怎么生成的呢?
思考間,于是打開(kāi)了瀏覽器的開(kāi)發(fā)者工具。
在網(wǎng)絡(luò)監(jiān)控一覽找到了這幅二維碼,與之對(duì)應(yīng)的鏈接是:
https://login.weixin.qq.com/qrcode/gaO8cOQweA==
如下圖所示:
然后習(xí)慣性地,嘗試多次刷新頁(yè)面,發(fā)現(xiàn)二維碼不斷發(fā)生變化,鏈接也不斷更改:
https://login.weixin.qq.com/qrcode/AencxgKNFQ==
https://login.weixin.qq.com/qrcode/YcD7f_DxvA==
https://login.weixin.qq.com/qrcode/QblN8lCn2g==
似乎發(fā)現(xiàn)了些東西:二維碼不斷變化,其對(duì)應(yīng)的鏈接尾的代碼也相應(yīng)變化,并且是隨機(jī)性的變化。
這也就是說(shuō),每一次頁(yè)面刷新都會(huì)隨機(jī)且唯一地生成一個(gè)二維碼。這或許可以與手機(jī)登錄的過(guò)程聯(lián)系起來(lái)。
似乎開(kāi)始明白了,于是再次拿起手機(jī),熟練的使用微信掃描了此時(shí)的二維碼。
“叮” 的一聲,網(wǎng)頁(yè)上的二維碼頓時(shí)變成了我?guī)洑獾奈⑿蓬^像。這個(gè)時(shí)候,我才突然意識(shí)到,是掃碼之后網(wǎng)頁(yè)才與他的微信賬號(hào)建立起了聯(lián)系。
如下圖所示:
也就是說(shuō):
1)沒(méi)有掃碼之前,頁(yè)面上的二維碼只是隨機(jī)生成的且與用戶無(wú)關(guān)的碼;
2)而當(dāng)用戶掃碼之后,二維碼便與用戶帳號(hào)綁定在了一起。
原來(lái)手機(jī)掃碼的用處是這樣!
此時(shí)注意到,手機(jī)微信上彈出了『微信登錄確認(rèn)』的提醒。這個(gè)時(shí)候謹(jǐn)慎地點(diǎn)擊了下方的登錄按鈕。
如下圖所示:
隨著平滑的動(dòng)畫一閃而過(guò),網(wǎng)頁(yè)上已經(jīng)顯示出了我的微信賬號(hào)信息,顯示微信賬號(hào)已經(jīng)登錄。再一次體驗(yàn)這個(gè)過(guò)程,心中開(kāi)始思索手機(jī)微信在登錄過(guò)程中所起到的具體作用。
首先需要明白幾個(gè)過(guò)程:
1)進(jìn)入網(wǎng)頁(yè)登陸界面,隨機(jī)生成一個(gè)二維碼;
2)通過(guò)手機(jī)掃描二維碼,將微信賬號(hào)與二維碼綁定;
3)在手機(jī)微信點(diǎn)擊登錄按鈕,授權(quán)網(wǎng)頁(yè)登錄微信賬號(hào);
4)網(wǎng)頁(yè)獲得的賬號(hào)信息,將數(shù)據(jù)顯示。
5、原理解釋
回顧上述過(guò)程,結(jié)合最開(kāi)始的原理猜測(cè),開(kāi)始思索整個(gè)環(huán)節(jié),是哪里理解的不對(duì)。。。
1)網(wǎng)頁(yè)的二維碼到底從何而來(lái)?
2)是誰(shuí)向微信后臺(tái)請(qǐng)求了賬號(hào)數(shù)據(jù)?
實(shí)際上:不同的網(wǎng)站可能都需要通過(guò)微信后臺(tái)進(jìn)行數(shù)據(jù)的獲取,那么每一個(gè)網(wǎng)站必然也存在它的后臺(tái)來(lái)給微信后臺(tái)發(fā)送請(qǐng)求。
這樣一來(lái),整個(gè)過(guò)程就能解釋得通了:
1)網(wǎng)站頁(yè)面刷新,網(wǎng)頁(yè)后臺(tái)向微信后臺(tái)請(qǐng)求授權(quán)登錄;
2)微信后臺(tái)返回登錄所需二維碼;
3)用戶通過(guò)手機(jī)掃描二維碼,并在手機(jī)上授權(quán)登錄后,微信后臺(tái)告知網(wǎng)頁(yè)后臺(tái)已授權(quán);
4)網(wǎng)頁(yè)后臺(tái)向微信后臺(tái)請(qǐng)求微信賬號(hào)數(shù)據(jù);
5)微信后臺(tái)返回賬號(hào)數(shù)據(jù);
6)網(wǎng)頁(yè)后臺(tái)接收數(shù)據(jù)并通過(guò)瀏覽器顯示;
6、技術(shù)剖析
正如上節(jié)所述,想清楚了整個(gè)過(guò)程后,我們應(yīng)該對(duì)整個(gè)過(guò)程的技術(shù)實(shí)現(xiàn)進(jìn)行進(jìn)一步的探究。
在微信開(kāi)發(fā)官方文檔中,我找到了第三方網(wǎng)站應(yīng)用微信登錄開(kāi)發(fā)指南:
https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
我將整個(gè)過(guò)程梳理了一遍,畫出了這個(gè)圖:
如上圖所示,整個(gè)技術(shù)實(shí)現(xiàn)如下。
(1)二維碼的獲得:
- 1)用戶打開(kāi)網(wǎng)站后,網(wǎng)站后臺(tái)根據(jù)微信OAuth2.0協(xié)議向微信開(kāi)發(fā)平臺(tái)請(qǐng)求授權(quán)登錄,并傳遞事先在微信開(kāi)發(fā)平臺(tái)中審核通過(guò)的AppID和AppSecrect等參數(shù);
- 2)微信開(kāi)發(fā)平臺(tái)對(duì)AppID等參數(shù)進(jìn)行驗(yàn)證,并向網(wǎng)站后臺(tái)返回二維碼;
- 3)網(wǎng)站后臺(tái)將二維碼傳送至網(wǎng)站前端進(jìn)行顯示。
(2)微信客戶端授權(quán)登錄:
- 1)用戶使用微信客戶端掃描二維碼并授權(quán)登錄;
- 2)微信客戶端將二維碼特定的uid與微信賬號(hào)綁定,傳送至微信開(kāi)發(fā)平臺(tái);
- 3)微信開(kāi)發(fā)平臺(tái)驗(yàn)證綁定數(shù)據(jù),調(diào)用網(wǎng)站后臺(tái)的回調(diào)接口,發(fā)送授權(quán)臨時(shí)票據(jù)code;
(3)網(wǎng)站后臺(tái)請(qǐng)求數(shù)據(jù):
- 1)網(wǎng)站后臺(tái)接收到code,表明微信開(kāi)發(fā)平臺(tái)同意數(shù)據(jù)請(qǐng)求;
- 2)網(wǎng)站后臺(tái)根據(jù)code參數(shù),再加上AppID和AppSecret請(qǐng)求微信開(kāi)發(fā)平臺(tái)換取access_token;
- 3)微信開(kāi)發(fā)平臺(tái)驗(yàn)證參數(shù),并返回access_token;
- 4)網(wǎng)站后臺(tái)收到access_token后即可進(jìn)行參數(shù)分析獲得用戶賬號(hào)數(shù)據(jù)。
在上述過(guò)程中,有幾個(gè)參數(shù)值得解釋一下(來(lái)源官方文檔):
- 1)AppID:應(yīng)用唯一標(biāo)識(shí),在微信開(kāi)放平臺(tái)提交應(yīng)用審核通過(guò)后獲得;
- 2)AppSecret:應(yīng)用密鑰,在微信開(kāi)放平臺(tái)提交應(yīng)用審核通過(guò)后獲得;
- 3)code:授權(quán)臨時(shí)票據(jù),第三方通過(guò)code進(jìn)行獲取access_token的時(shí)候需要用到,code的超時(shí)時(shí)間為10分鐘,一個(gè)code只能成功換取一次access_token即失效。code的臨時(shí)性和一次性保障了微信授權(quán)登錄的安全性。
整個(gè)過(guò)程從網(wǎng)站后臺(tái)向微信開(kāi)發(fā)平臺(tái)請(qǐng)求授權(quán)登錄開(kāi)始,最終目的是為了獲得access_token:
access_token:用戶授權(quán)第三方應(yīng)用發(fā)起接口調(diào)用的憑證
在獲得了access_token后就可以解析用戶的一些基本信息,包括頭像、用戶名、性別、城市等。這樣一來(lái),整個(gè)微信掃描登錄的過(guò)程就完成了。
7、寫在最后
研究到這,終于大體上對(duì)微信掃碼登錄的整個(gè)過(guò)程有了清晰的認(rèn)知??雌饋?lái)似乎也不難,開(kāi)發(fā)者只需要在網(wǎng)頁(yè)后端做好對(duì)微信公眾平臺(tái)的接口調(diào)用即可實(shí)現(xiàn)掃碼登錄。
伸了伸懶腰,忽然又想到在整個(gè)過(guò)程中還需要考慮超時(shí)的問(wèn)題。比如二維碼超時(shí)未掃描、二維碼掃描后超時(shí)授權(quán)、獲得access_token后超時(shí)等等問(wèn)題。
我發(fā)現(xiàn)一個(gè)簡(jiǎn)單的功能實(shí)現(xiàn)起來(lái)還是需要考慮許多細(xì)節(jié),真的是紙上得來(lái)終覺(jué)淺呀。于是我下定決心,下次得少上網(wǎng)沖浪了,花點(diǎn)時(shí)間搭個(gè)服務(wù)器先把微信掃碼登錄過(guò)程實(shí)現(xiàn)看看。
不過(guò),還得先去在微信開(kāi)放平臺(tái)注冊(cè)開(kāi)發(fā)者帳號(hào),并擁有一個(gè)已審核通過(guò)的網(wǎng)站應(yīng)用,并獲得相應(yīng)的AppID和AppSecret才行。
想了想,還是讓我先趟一會(huì)兒吧。。。
附錄:更多IM開(kāi)發(fā)相關(guān)文章
[1] IM開(kāi)發(fā)熱門文章:
《新手入門一篇就夠:從零開(kāi)發(fā)移動(dòng)端IM》
《移動(dòng)端IM開(kāi)發(fā)者必讀(一):通俗易懂,理解移動(dòng)網(wǎng)絡(luò)的“弱”和“慢”》
《移動(dòng)端IM開(kāi)發(fā)者必讀(二):史上最全移動(dòng)弱網(wǎng)絡(luò)優(yōu)化方法總結(jié)》
《從客戶端的角度來(lái)談?wù)勔苿?dòng)端IM的消息可靠性和送達(dá)機(jī)制》
《現(xiàn)代移動(dòng)端網(wǎng)絡(luò)短連接的優(yōu)化手段總結(jié):請(qǐng)求速度、弱網(wǎng)適應(yīng)、安全保障》
《騰訊技術(shù)分享:社交網(wǎng)絡(luò)圖片的帶寬壓縮技術(shù)演進(jìn)之路》
《小白必讀:閑話HTTP短連接中的Session和Token》
《移動(dòng)端IM開(kāi)發(fā)需要面對(duì)的技術(shù)問(wèn)題》
《開(kāi)發(fā)IM是自己設(shè)計(jì)協(xié)議用字節(jié)流好還是字符流好?》
《請(qǐng)問(wèn)有人知道語(yǔ)音留言聊天的主流實(shí)現(xiàn)方式嗎?》
《通俗易懂:基于集群的移動(dòng)端IM接入層負(fù)載均衡方案分享》
《微信對(duì)網(wǎng)絡(luò)影響的技術(shù)試驗(yàn)及分析(論文全文)》
《即時(shí)通訊系統(tǒng)的原理、技術(shù)和應(yīng)用(技術(shù)論文)》
《開(kāi)源IM工程“蘑菇街TeamTalk”的現(xiàn)狀:一場(chǎng)有始無(wú)終的開(kāi)源秀》
《QQ音樂(lè)團(tuán)隊(duì)分享:Android中的圖片壓縮技術(shù)詳解(上篇)》
《QQ音樂(lè)團(tuán)隊(duì)分享:Android中的圖片壓縮技術(shù)詳解(下篇)》
《騰訊原創(chuàng)分享(一):如何大幅提升移動(dòng)網(wǎng)絡(luò)下手機(jī)QQ的圖片傳輸速度和成功率》
《騰訊原創(chuàng)分享(二):如何大幅壓縮移動(dòng)網(wǎng)絡(luò)下APP的流量消耗(上篇)》
《騰訊原創(chuàng)分享(三):如何大幅壓縮移動(dòng)網(wǎng)絡(luò)下APP的流量消耗(下篇)》
《如約而至:微信自用的移動(dòng)端IM網(wǎng)絡(luò)層跨平臺(tái)組件庫(kù)Mars已正式開(kāi)源》
《基于社交網(wǎng)絡(luò)的Yelp是如何實(shí)現(xiàn)海量用戶圖片的無(wú)損壓縮的?》
《騰訊技術(shù)分享:騰訊是如何大幅降低帶寬和網(wǎng)絡(luò)流量的(圖片壓縮篇)》
《騰訊技術(shù)分享:騰訊是如何大幅降低帶寬和網(wǎng)絡(luò)流量的(音視頻技術(shù)篇)》
《字符編碼那點(diǎn)事:快速理解ASCII、Unicode、GBK和UTF-8》
《全面掌握移動(dòng)端主流圖片格式的特點(diǎn)、性能、調(diào)優(yōu)等》
《子彈短信光鮮的背后:網(wǎng)易云信首席架構(gòu)師分享億級(jí)IM平臺(tái)的技術(shù)實(shí)踐》
《微信技術(shù)分享:微信的海量IM聊天消息序列號(hào)生成實(shí)踐(算法原理篇)》
《自已開(kāi)發(fā)IM有那么難嗎?手把手教你自擼一個(gè)Andriod版簡(jiǎn)易IM (有源碼)》
《融云技術(shù)分享:解密融云IM產(chǎn)品的聊天消息ID生成策略》
《適合新手:從零開(kāi)發(fā)一個(gè)IM服務(wù)端(基于Netty,有完整源碼)》
《拿起鍵盤就是干:跟我一起徒手開(kāi)發(fā)一套分布式IM系統(tǒng)》
>> 更多同類文章 ……
[2] 有關(guān)WEB端即時(shí)通訊開(kāi)發(fā):
《新手入門貼:史上最全Web端即時(shí)通訊技術(shù)原理詳解》
《Web端即時(shí)通訊技術(shù)盤點(diǎn):短輪詢、Comet、Websocket、SSE》
《SSE技術(shù)詳解:一種全新的HTML5服務(wù)器推送事件技術(shù)》
《Comet技術(shù)詳解:基于HTTP長(zhǎng)連接的Web端實(shí)時(shí)通信技術(shù)》
《新手快速入門:WebSocket簡(jiǎn)明教程》
《WebSocket詳解(一):初步認(rèn)識(shí)WebSocket技術(shù)》
《WebSocket詳解(二):技術(shù)原理、代碼演示和應(yīng)用案例》
《WebSocket詳解(三):深入WebSocket通信協(xié)議細(xì)節(jié)》
《WebSocket詳解(四):刨根問(wèn)底HTTP與WebSocket的關(guān)系(上篇)》
《WebSocket詳解(五):刨根問(wèn)底HTTP與WebSocket的關(guān)系(下篇)》
《WebSocket詳解(六):刨根問(wèn)底WebSocket與Socket的關(guān)系》
《socket.io實(shí)現(xiàn)消息推送的一點(diǎn)實(shí)踐及思路》
《LinkedIn的Web端即時(shí)通訊實(shí)踐:實(shí)現(xiàn)單機(jī)幾十萬(wàn)條長(zhǎng)連接》
《Web端即時(shí)通訊技術(shù)的發(fā)展與WebSocket、Socket.io的技術(shù)實(shí)踐》
《Web端即時(shí)通訊安全:跨站點(diǎn)WebSocket劫持漏洞詳解(含示例代碼)》
《開(kāi)源框架Pomelo實(shí)踐:搭建Web端高性能分布式IM聊天服務(wù)器》
《使用WebSocket和SSE技術(shù)實(shí)現(xiàn)Web端消息推送》
《詳解Web端通信方式的演進(jìn):從Ajax、JSONP 到 SSE、Websocket》
《MobileIMSDK-Web的網(wǎng)絡(luò)層框架為何使用的是Socket.io而不是Netty?》
《理論聯(lián)系實(shí)際:從零理解WebSocket的通信原理、協(xié)議格式、安全性》
《微信小程序中如何使用WebSocket實(shí)現(xiàn)長(zhǎng)連接(含完整源碼)》
《八問(wèn)WebSocket協(xié)議:為你快速解答WebSocket熱門疑問(wèn)》
《快速了解Electron:新一代基于Web的跨平臺(tái)桌面技術(shù)》
《一文讀懂前端技術(shù)演進(jìn):盤點(diǎn)Web前端20年的技術(shù)變遷史》
《Web端即時(shí)通訊基礎(chǔ)知識(shí)補(bǔ)課:一文搞懂跨域的所有問(wèn)題!》
>> 更多同類文章 ……
(本文同步發(fā)布于:http://www.52im.net/thread-2941-1-1.html)