日麻折騰筆記Java篇(3)-天鳳的websocket協(xié)議
思路
天鳳的websocket協(xié)議比較簡(jiǎn)單,可以直接在chrome瀏覽器中使用開發(fā)者工具看到與服務(wù)端的交互,如下圖所示:

我們可以使用http代理來代理瀏覽器的流量,但由于這個(gè)協(xié)議是wss的,通過http代理是沒法看到交互的文本內(nèi)容的,所以需要搞一個(gè)https代理,還得整個(gè)證書,有些過于麻煩了。
我看到天鳳的服務(wù)端地址是直接寫在js文件中的,所以我們可以通過修改js文件的方式來將天鳳的服務(wù)端地址修改為 localhost
編碼
我們首先要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的websocket代理,功能只需要有發(fā)送和接收文本消息的功能就行了。瀏覽器與客戶端之間的websocket連接,我使用spring-boot那套東西,直接寫一個(gè)handler和一個(gè)配置文件就行:


對(duì)于localhost服務(wù)端與天鳳服務(wù)器的連接,我使用的是okhttp:


這里在接受到天鳳服務(wù)器的消息時(shí),將消息放入隊(duì)列中,由另外一個(gè)線程將消息發(fā)送給瀏覽器客戶端,下圖是登錄相關(guān)的測(cè)試,可以看到瀏覽器正常接收到了登錄成功的響應(yīng):

awesome!
最后再實(shí)現(xiàn)我們第一步的思路,替換js文件,比較好的做法是使用zuul之類的代理將響應(yīng)里的數(shù)據(jù)替換,我這里直接將天鳳整個(gè)頁(yè)面的html和js扒下來了,等后面再優(yōu)化:

直接在瀏覽器中打開,能夠打開但是控制臺(tái)報(bào)了N個(gè)404的錯(cuò)誤,疑似是lateset.js中有根據(jù)域名生成url的相關(guān)代碼,我修改hosts并在本地配置了ng的反向代理,成功解決,運(yùn)行如下:

應(yīng)用日志如下:
