You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Socket.io配置WSS协议?网站采用Cloudflare提供HTTPS

配置Socket.io使用WSS协议(配合Cloudflare HTTPS)

一、先确认Cloudflare的基础配置

  • 开启WebSocket支持:登录Cloudflare控制台→进入你的域名→「网络」选项卡→找到「WebSocket」开关,确保处于开启状态(默认通常是开启的,但建议手动确认)。
  • 配置SSL/TLS模式:
    • 如果你的源服务器(Origin Server)没有部署SSL证书,选择「灵活」模式(Cloudflare与用户端用HTTPS,与源服务器用HTTP);
    • 如果源服务器已有合法SSL证书,选择「严格」模式(全程HTTPS,安全性更高)。

二、服务器端Socket.io配置

根据源服务器是否有SSL证书,分两种情况处理:

情况1:源服务器未配置SSL(依赖Cloudflare代理HTTPS)

此时无需给Socket.io配置HTTPS服务器,但需要让它信任Cloudflare的代理,这样才能正确识别客户端的WSS请求。示例代码:

const express = require('express');
const http = require('http');
const { Server } = require('socket.io');

const app = express();
const server = http.createServer(app);

const io = new Server(server, {
  cors: {
    origin: "https://your-domain.com", // 替换为你的网站域名
    methods: ["GET", "POST"]
  },
  trustProxy: true // 关键:信任Cloudflare代理,确保Socket.io识别到WSS协议
});

// 你的Socket.io业务逻辑
io.on('connection', (socket) => {
  console.log('用户已连接');
  // ...其他逻辑
});

server.listen(3000); // 监听源服务器的端口,Cloudflare需转发该端口的请求

情况2:源服务器已配置SSL证书

直接创建HTTPS服务器并挂载Socket.io即可,示例代码:

const express = require('express');
const https = require('https');
const fs = require('fs');
const { Server } = require('socket.io');

const app = express();
// 加载本地SSL证书文件
const sslOptions = {
  key: fs.readFileSync('/path/to/your-private-key.pem'),
  cert: fs.readFileSync('/path/to/your-certificate.pem')
};
const server = https.createServer(sslOptions, app);

const io = new Server(server, {
  cors: {
    origin: "https://your-domain.com",
    methods: ["GET", "POST"]
  }
});

// 你的Socket.io业务逻辑
io.on('connection', (socket) => {
  console.log('用户已连接');
  // ...其他逻辑
});

server.listen(443); // 标准HTTPS端口,或自定义端口(需在Cloudflare配置转发)

三、客户端连接配置

客户端只需将Socket.io的连接地址改为HTTPS/WSS协议即可,两种写法都可行:

// 写法1:直接用网站域名,Socket.io会自动适配WSS(推荐)
const socket = io("https://your-domain.com");

// 写法2:明确指定WSS协议
const socket = io("wss://your-domain.com");

如果你的Socket.io服务部署在子路径下(比如/chat-socket),记得加上路径:io("https://your-domain.com/chat-socket")

四、验证配置是否生效

打开浏览器开发者工具→「网络」面板→筛选「WS」类型,查看连接的协议是否为wss://,且状态显示为「已建立」即可。

内容的提问来源于stack exchange,提问作者Olex7iMatix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:05:20