平时用手机刷网页、看直播或者玩在线游戏时,可能没太注意背后的数据是怎么传的。其实很多实时通信功能都靠 WebSocket 实现,比如聊天室消息即时弹出、股票价格实时刷新。那 WebSocket 到底用的是什么端口呢?
默认端口:80 和 443
WebSocket 本身没有固定专属端口,但它通常走的是和网页一样的路。如果网站是 HTTP(不加密),它用 80 端口;如果是 HTTPS(加密),那就走 443 端口。也就是说,ws:// 开头的连接用 80,wss:// 开头的用 443。
这设计挺聪明的。因为大多数路由器和防火墙对 80 和 443 是放行的,这样 WebSocket 连接不容易被拦下,用户体验更顺。
也可以用其他端口
虽然常用 80 和 443,但开发时也常见用别的端口。比如本地调试的时候,后端服务可能跑在 3000 或 8080 端口,这时候 WebSocket 链接就会写成 ws://localhost:3000 或 ws://example.com:8080。
只要服务器开了对应端口,并且浏览器能通,就可以正常通信。不过上线后一般还是会收归到 443 上,毕竟安全又省事。
举个实际例子
假设你在做一个在线客服系统,用户点开网页自动连上客服通道。前端代码可能是这样的:
const socket = new WebSocket('wss://service.example.com/chat');
这里用的是 wss,走的就是 443 端口。用户不需要额外设置,打开页面就自动连上了,就像访问普通网页一样自然。
要是你在公司内网搭了个测试服务,地址可能是:
const socket = new WebSocket('ws://192.168.1.100:9000');
这时候连的就是 9000 端口,适合局域网调试,但外网访问就得考虑防火墙和端口映射问题了。