WebSocket默认端口vs非默认端口:哪种性能更优?我的理解是否正确?
WebSocket连接方式的性能对比
你提到的两种WebSocket连接方式:
let socket = new WebSocket("wss://example.com");
和
let socket = new WebSocket("wss://example.com:8000");
你的理解基本正确,结合具体场景的细节如下:
核心逻辑:连接复用的前提
wss://example.com默认使用HTTPS的标准端口443,而浏览器加载index.html时,绝大多数场景下也是通过443端口的HTTPS连接。此时如果浏览器连接池中有空闲的同端口、同域名连接,WebSocket的握手过程(基于HTTPS协议升级)可以直接复用已有的TCP/TLS连接,省去了TCP三次握手、TLS密钥协商的耗时,连接建立速度更快。wss://example.com:8000指定了非标准的8000端口,这个端口和加载页面的443端口属于不同端点,浏览器会判定为新的连接目标,必须重新建立TCP/TLS连接,额外的握手流程会增加连接建立时间,性能自然不如前者。
例外场景
如果你的网站本身部署在8000端口的HTTPS服务上(即加载index.html用的是https://example.com:8000),那第二种方式反而能复用已有连接,第一种用443端口的话则需要新建连接——但这种场景非常少见,因为443是HTTPS的通用标准端口。
另外,在HTTP/2协议下,多路复用特性会让连接复用的效率更高:同一个TCP连接可以承载多个HTTP请求和WebSocket流,进一步降低连接开销。
综上,在绝大多数标准部署场景中,第一种方式的性能确实更优,你的判断是对的。
内容的提问来源于stack exchange,提问作者mnemon1ck
相关产品推荐
相关产品推荐

