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 中修改,这里不再详细说明。

posted @ 2020-05-06 14:21  风中的沙~~  阅读(1250)  评论(3编辑  收藏  举报