socketio 能和WEB服务共用同一个端口吗?-灵析社区

无敌英俊大师兄

这种情况应该使用反向代理会比较简单。 > 之前web服务和socketio都是独立的,比如一个 80,一个9092 这里我的理解是,80端口是一个程序,可能提供了web或者api接口,然后9092端口使用了socketio实现了一个长链接的服务。原来客户端上连接socketio的时候直接通过9092端口去访问的,但是现在只能对外暴露一个80端口了,所以原来的两个服务需要共用一个80端口。 官方文档上也有关于反向代理的描述:[https://socket.io/zh-CN/docs/v4/reverse-proxy/](https://link.segmentfault.com/?enc=6feghJM95g85A4WVMGGP8g%3D%3D.zRRxX8Wtm1T8Ozt9Y7fq2CXybbrklM8C1%2BvtbVgpYqVcXoSw8WVE6Q57llHmtXG1) 用nginx举例子,设置一个规则把/socket.io/开头的请求代理到原来的9092端口,其他路径的请求转发到原来的80端口的程序就可以了。 socketio它只是websoket和http的封装吧,处理这个和 websocket/http 是一样的吧,没什么区别。 可以参考原来的官网的配置文件,大概的配置是这样的: http { server { listen 80; root /var/www/html; location / { #这里是默认的,没有匹配上/socket.io/的都使用这个后端,转发到这里 proxy_pass http://localhost:9091; } location /socket.io/ { #这里匹配socketio的请求,转发给9092。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://localhost:9092; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } }

阅读量:1

点赞量:0

问AI