[Feature Request] Intercepting hardcoded localhost WebSockets for HMR (.NET Hot Reload / dotnet watch)
- Ngôn ngữ chính
- TypeScript
- Star
- 79.3k
- Fork
- 6.8k
- Merge trung bình
- 2 ngày 6 giờ
- Pull request đã merge (30 ngày)
- 41
Mô tả
## What is your suggestion?
Implement a client-side interceptor or dynamic proxy mechanism within `code-server`'s browser context that can catch outbound WebSocket requests to `localhost:` and seamlessly route them through `code-server`'s built-in proxy layer back to the remote workspace.
## Why do you want this feature?
Developers relying on `code-server` for a pure browser-based development experience cannot use .NET's Hot Reload (`dotnet watch`).
When running `dotnet watch`, the .NET SDK dynamically injects a script (`aspnetcore-browser-refresh.js`) into the DOM that attempts to establish an HMR WebSocket connection to a random, ephemeral port on `localhost` (e.g., `ws://localhost:40777`).
Because the browser executes this locally, it queries the user's physical machine rather than the remote `code-server` container. The connection drops, and Hot Reload fails:
`Firefox can’t establish a connection to the server at ws://localhost:40777/`
```
Firefox can’t establish a connection to the server at ws://localhost:43067/. aspnetcore-browser-refresh.js:318:25
WebSocket failed to connect. aspnetcore-browser-refresh.js:19:15
Firefox can’t establish a connection to the server at wss://localhost:33935/. aspnetcore-browser-refresh.js:318:25
WebSocket failed to connect. aspnetcore-browser-refresh.js:19:15
Unable to establish a connection to the browser refresh server. aspnetcore-browser-refresh.js:23:13
```
## Are there any workarounds to get this functionality today?
There are no workarounds for a **pure browser** workflow (e.g., coding on an iPad or a locked-down laptop without CLI access).
## Are you interested in submitting a PR for this?
No, I do not have the familiarity with the `code-server` networking/proxy codebase to implement this reliably.
Hướng dẫn đóng góp
Hướng nghiên cứu
The payload names no code-server files or tests. Start by tracing browser-context handling of outbound localhost WebSockets and the built-in proxy layer, then examine how the injected aspnetcore-browser-refresh.js uses ephemeral ws/wss ports. Done should be a pure-browser dotnet watch workflow where Hot Reload connects through code-server without localhost failures.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- typescript
- Lĩnh vực
- devtools, networking
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100