我有一个 Nodejs 后端,我的前端通过 Nginx 代理到该后端,Nginx 负责路由所有流量。我正在使用 Let's Encrypt,并且可以通过访问它来访问服务器 (
https://example.com
)。我还设置了负载平衡,通过“最少连接”协议将流量路由到上游。
在前端,我像这样连接
socket.io
:
import { io, ManagerOptions, SocketOptions } from 'socket.io-client';
const otherOpts = {};
const socket = io('https://example.com', {
...otherOpts,
secure: false,
} as Partial<ManagerOptions & SocketOptions>);
这按原样工作,但在当前情况下,我需要
secure: true
做什么?这就是决定ws
vs wss
的条件吗?客户端已经通过 https 连接,所以我可以安全地忽略这个吗?
secure: true
用于确保安全的 WebSocket 连接 (wss://),而不是非安全的连接 (ws://)。
就像您提到的,当我们在与客户端连接时使用 HTTPs 时,WebSocket 已经是安全的了
wss://
,因为它是在与 HTTPs 相同的安全上下文下使用的。
所以,由于 HTTPs 连接,它已经默认是安全的,所以你不需要设置
secure: true
。
您可以这样编写代码:
import { io } from 'socket.io-client';
const socket = io('https://yourClientURL.com');