首先這個問題的由來是在內網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 中修改,這里不再詳細說明。