---
title: "DF0057: WebSocket Transport Disabled"
description: "This instance disables its WebSocket transport (ws: false), so there is no socket to drive upgrades into."
canonical_url: "https://devfra.me/errors/df0057"
---
# DF0057: WebSocket Transport Disabled

> This instance disables its WebSocket transport (ws: false), so there is no socket to drive upgrades into.

## Message

> This instance disables its WebSocket transport (`ws: false`), so there is no socket to drive upgrades into.

## Cause

`ws: false` runs the instance without a WebSocket, so clients connect over the SSE endpoint instead (`backend: 'sse'`). There is no socket for `attach(server)` / `handleUpgrade(req, socket, head)` to feed.

## Example

```ts
import { initDevframe } from 'devframe/initiate'

const sseOnly = initDevframe(def, {
  base: '/__my-tool/',
  ws: false,
})
sseOnly.attach(myServer) // ✗ throws DF0057: there is no socket

// ✓ SSE needs no upgrade wiring; serve the HTTP surface and you're done.
myServer.on('request', (req, res) => sseOnly.nodeMiddleware(req, res))
```

## Fix

Drop the `attach` / `handleUpgrade` wiring; the SSE endpoint rides the instance's ordinary HTTP surface (`handler` / `nodeMiddleware`), so serving requests is all a host needs. Remove `ws: false` if the instance should serve a WebSocket after all.

## Source

- [`packages/devframe/src/node/instance-shell.ts`](https://github.com/devframes/devframe/blob/main/packages/devframe/src/node/instance-shell.ts): the shared instance shell throws this from `attach` / `handleUpgrade` when the WebSocket tier is `disabled`, for both `initDevframe` and `initHub`.


## Sitemap

See the full [sitemap](https://devfra.me/sitemap.md) for all pages.
