socketio 更改requsturl 實現nginx 代理多個服務端


首先這個問題的由來是在內網socketio 需要映射到外網,下面是我的請求相關信息

 

 

 通過觀察不難看出請求requesturl 為http:192.168.2.125/socket.io/?EIO=........................   這里socket 與 http 的原理與關系不再說明,簡單點來說就是要想建立socket 必須首先通過http 握手 然后upgrade 更新到socket連接,那么我將nignx 的配置文件配置如下,即可完成對socket 的外網代理

 

 

但是,有了一個新的問題,這個代理方式是一個應用服務器,假如我有多個應用服務器,用這個/socket.io 去匹配就不行了,於是有了,我想修改socket 默認請求地址的需求


 

 socketio 前端主要應用的包為socketio 官網地址 https://socket.io/docs/ ,通過扒官網發現,設置socketioi url 的地方在 Manager 里 截圖如下

 

 這個path 就是可以修改url 的地方,但是使用方法官網沒有提供,大概看了下這個設置需要實例化 Manager  ,於是乎從官網下載 socketio 包翻下源碼 

源碼是用ts 寫的,但是寫法和思路很多地方都跟java 很相似

 

 簡單說下我的理解,別應用的io 其實就是個 SocktIOClientStatic 的接口,接口內部定義了響應的屬性,而Manager 就在里面,那么如果我想使用 io  只需要接口引用方式引入Manager 然后再實例化就ok 了

下面是io 實例化的兩種方式

 

 

 

 

這樣設置后,socketio requsturl 更改成了sockettest,問題解決。


 

后面其實還碰到后台的問題,也許是socket 開發時大家 都將socketio 作為默認路徑,前端雖然修改了請求地址,但是后台報錯 404  ,我用的后台socketio 時 flask-socketio ,相關的配置需要重新在middleware 中修改,這里不再詳細說明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM