Consider disabling WebSocket message splitting when permessage-deflate is off
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 45/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- typescript, vscode
- Domínio
- networking, performance
Direção de pesquisa
Comece revisando ipc.net.ts, especialmente MaxWebSocketMessageLength e o comportamento de enableMessageSplitting descrito na issue. Compare os caminhos com splitting e sem splitting em conexões proxied de alta latência e, em seguida, defina se a conclusão significa uma configuração ajustável via CLI ou um valor padrão alterado, respaldado por verificações de latência e segurança da compressão.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
WebSocket message splitting adds significant latency for large files on proxied connections
When serving code-server behind a proxy (which is the common production deployment), the 256KB WebSocket message splitting introduced in microsoft/vscode#174278 multiplies per-message RTT overhead significantly for large file operations like image previews.
Background
VS Code splits large IPC messages into 256KB chunks (MaxWebSocketMessageLength = 256 * 1024 in ipc.net.ts) to avoid blocking the Node.js event loop during zlib compression. Each chunk becomes a separate WebSocket message.
The latency problem in proxied deployments
In a proxied deployment (e.g. a gateway in front of a devbox), each WebSocket message incurs a full round-trip. With 100ms RTT between the proxy and the devbox:
- A 10MB file generates ~40 chunks (10MB ÷ 256KB)
- Each chunk = one WebSocket message = one round-trip
- Total overhead: ~40 × 100ms = ~4 seconds of pure latency
We tested image preview times (time from opening a file in the explorer to the image fully rendering) across different file sizes at 100ms simulated RTT:
| File size | Splitting ON | Splitting OFF | Improvement |
|---|---|---|---|
| 145 KB | 2,212ms | 2,251ms | ~0% |
| 1 MB | 1,988ms | 1,707ms | 14% |
| 1.5 MB | 2,093ms | 1,412ms | 33% |
| 5.6 MB | 4,255ms | 2,193ms | 48% |
| 10.3 MB | 7,262ms | 2,888ms | 60% |
Is disabling splitting safe? (Does zlib actually block?)
A few basic tests didn't seem to indicate this issue in our case, but more investigation may be needed
Question
Would you consider making enableMessageSplitting configurable via a CLI flag, or defaulting it to false for single-user deployments?
Happy to submit a PR if there's agreement on the right approach.
- Linguagem predominante
- TypeScript
- Estrelas
- 79.4k
- Forks
- 6.9k
- Merge médio
- 2d 13h
- PRs com merge (30d)
- 39
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de coder/code-server
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
coder/code-server#8017 · 2 comentários ·
-
Bump proxy-addr to 2.0.8 Abertasecurity
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
coder/code-server#8013 · 4 comentários ·
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
coder/code-server#7976 · 2 comentários ·
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
coder/code-server#7962 · 3 comentários ·
-
bug needs-investigation
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
coder/code-server#7955 · 1 comentário ·
Todas as issues de coder/code-server
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
safetrustcr/dApp-SafeTrust#426 ·
-
area:workflow bug ready-for-agent
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
fil-donadoni/tolaria#4409 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Fission-AI/OpenSpec#1960 ·
-
Add dependabot Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
corsairdev/corsair#1764 ·