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

如何部署使用双端口的SvelteKit IO应用?

双端口SvelteKit + SKIO应用部署方案

1. 反向代理统一入口(推荐)

用Nginx或Caddy这类反向代理工具,把两个服务统一到同一个域名下,既解决跨域问题,也无需暴露多个端口。

Nginx配置示例

server {
    listen 80;
    server_name your-domain.com;

    # 转发主应用请求到4173端口
    location / {
        proxy_pass http://localhost:4173;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 转发Socket请求到3001端口,需适配WebSocket协议
    location /socket.io/ {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

同时修改SKIO配置,前端无需指定具体端口,直接走域名路径:

// 前端(browser环境)配置
skio.setup('/socket.io/', {
    autoConnect: true
});

// 后端(server环境)配置
skio.setup('http://localhost:3001', {
    cors: {
        origin: "https://your-domain.com", // 替换为你的生产域名
        credentials: true,
    },
}).then(io => {
    if (browser) return;
    io.on('connect', socket => {
        socket.on('message', (message) => {
            if (message.game_stop === true) {
                socket.disconnect()
            } else {
                socket.emit('message', message);
                socket.broadcast.emit('message', message);
            }
        });
    });
});

2. 容器化部署(Docker)

将主应用和Socket服务分别打包为Docker镜像,用Docker Compose统一编排管理,简化端口映射和服务启停。

docker-compose.yml示例

version: '3.8'
services:
  svelte-app:
    build: ./svelte-app  # 指向SvelteKit应用的Dockerfile目录
    ports:
      - "4173:4173"
    restart: always

  skio-server:
    build: ./skio-server  # 指向SKIO服务的Dockerfile目录
    ports:
      - "3001:3001"
    restart: always

在服务器上执行docker-compose up -d即可后台启动两个服务,若配合反向代理使用,可不用直接暴露端口。

3. 进程管理工具托管

用PM2这类工具同时管理两个服务的后台运行,确保服务崩溃后自动重启。

操作步骤:

  • 安装PM2:npm install -g pm2
  • 启动SvelteKit应用(假设用node适配器部署):pm2 start node_modules/@sveltejs/adapter-node/build/index.js --name svelte-app
  • 启动SKIO服务:pm2 start skio-entry.js --name skio-server(替换为你的SKIO入口文件名)
  • 保存配置并设置开机自启:pm2 save && pm2 startup

注意事项

  • 生产环境禁止使用localhost,需替换为服务器公网IP或域名
  • 若不使用反向代理,需确保服务器防火墙/安全组开放4173和3001端口
  • CORS配置需严格匹配生产环境域名,避免跨域错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:06:00