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

FastAPI WebSocket路由在Deta Space部署后失效,本地正常

问题:FastAPI WebSocket部署到Deta Space后无法工作(本地正常)

将FastAPI项目部署到Deta Space后,WebSocket路由/ws无法正常工作,但本地环境运行完全正常。点击发送消息后,Deta Space日志显示#404 route not found,前端控制台提示连接到wss://fastapitouch-1-l4518065.deta.app/webs失败。

相关代码

后端FastAPI代码

from fastapi import FastAPI, WebSocket
from fastapi.middleware.cors import CORSMiddleware
from fastapi.websockets import WebSocketDisconnect

app = FastAPI(
    title='websocket test',
    description="The description",
    version='062023.1'
)
allow_all = ['*']
app.add_middleware(
   CORSMiddleware,
   allow_origins=allow_all,
   allow_credentials=True,
   allow_methods=allow_all,
   allow_headers=allow_all
)

@app.websocket('/ws')
async def websocket_echo(websocket: WebSocket):
    await websocket.accept()
    try: 
        while True:
            data = await websocket.receive_text()
            await websocket.send_text(f'You send: {data}')
    except WebSocketDisconnect:
        print('user disconnected')

前端Vue组件代码(原代码)

// CREATE CONNECTION
let socket = new WebSocket(`wss://fastapitouch-1-l4518065.deta.app/ws`)

// SEND MESSAGE
socket.send(this.message)

// ON MESSAGE FROM SERVER LOG IT
socket.onmessage = function(event) {
  console.log(`Message from server: ${event.data}`)
}

问题分析与解决方案

核心问题点

  1. 前端发送时机错误:原代码直接调用socket.send(this.message),此时WebSocket连接尚未完成建立,会导致发送失败,甚至引发异常路径解析。
  2. 路径拼写不一致:前端控制台错误提示连接的是/webs,但后端路由和代码中写的是/ws,需确认前端实际运行代码是否存在拼写错误。

修正后的前端代码

// CREATE CONNECTION
let socket = new WebSocket(`wss://fastapitouch-1-l4518065.deta.app/ws`)

// 等待连接建立完成后再发送消息
socket.onopen = function() {
  socket.send(this.message)
}

// 接收服务器消息
socket.onmessage = function(event) {
  console.log(`Message from server: ${event.data}`)
}

// 监听连接错误,便于排查问题
socket.onerror = function(error) {
  console.error('WebSocket连接错误:', error)
}

// 监听连接关闭事件
socket.onclose = function(event) {
  console.log('WebSocket连接已关闭:', event)
}

额外检查项

  • 确认Deta Space的Micro部署配置:没有自定义路由重写规则拦截/ws路径,Deta Space默认会转发所有请求路径到FastAPI应用,无需额外配置。
  • 核对前端实际代码中的WebSocket路径:确保没有把/ws误写为/webs,这是导致404的常见原因之一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:10:25