现在还有人使用 socketio 吗?
之前web服务和socketio都是独立的,比如一个 80,一个9092
现在的问题是客户环境只能开放 80 端口,这样导致socketio没法使用了。
对socketio我的了解比较粗浅一些,现在想要咨询的第一个问题是:socketio能否和WEB服务共用同一个端口?
注意问的是 socketio, 不是websocket
socketio的官网地址:
https://socket.io/zh-CN/
现在还有人使用 socketio 吗?
之前web服务和socketio都是独立的,比如一个 80,一个9092
现在的问题是客户环境只能开放 80 端口,这样导致socketio没法使用了。
对socketio我的了解比较粗浅一些,现在想要咨询的第一个问题是:socketio能否和WEB服务共用同一个端口?
注意问的是 socketio, 不是websocket
socketio的官网地址:
https://socket.io/zh-CN/
可以,但需要是同一个进程,所以你得把 HTTP 服务和 WS 服务放到一个项目里。如果业务上实在分不开的话也可以考虑前面套一层 nginx 做转发,用路径区分就好了。你们客户环境只能开放 80 端口指的也是只能对公网开放 80 端口吧,本机你想监听哪个端口就监听哪个呗。
P.S. 你这个问法就很奇怪,socketio 只是对 WebSocket 的一层封装而已。
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.7k 阅读✓ 已解决
这种情况应该使用反向代理会比较简单。
这里我的理解是,80端口是一个程序,可能提供了web或者api接口,然后9092端口使用了socketio实现了一个长链接的服务。原来客户端上连接socketio的时候直接通过9092端口去访问的,但是现在只能对外暴露一个80端口了,所以原来的两个服务需要共用一个80端口。
官方文档上也有关于反向代理的描述:https://socket.io/zh-CN/docs/v4/reverse-proxy/
用nginx举例子,设置一个规则把/socket.io/开头的请求代理到原来的9092端口,其他路径的请求转发到原来的80端口的程序就可以了。
socketio它只是websoket和http的封装吧,处理这个和 websocket/http 是一样的吧,没什么区别。
可以参考原来的官网的配置文件,大概的配置是这样的: