说起 Node.js 的 WebSocket 方案,可选的方案有许多种,其中许多方案都提供将 WS 服务端口和 HTTP 服务复用的方案,然而这种方案真的是最佳选择吗。不论是专业做实时通信的 [socket.io] ,还是用户量最大的 Express 的热门中间件 [express-ws] 都支持端口复用,比如 WS 和 HTTP 复用 80 端口, WSS 和 HTTPS 复用 443 端口。这里以 express-ws 底层封装的 [ws] 库为例,来简单剖析,socket.io 实现类似不过分层较多,有兴趣可以围观代码。不过在聊 Traefik 之前,我们先得聊聊 Node.js 和 Websocket。 阅读全文