DioxusLabs / DioxusLabs/dioxus
Dioxus websocket request doesn't include `base_path`
- Dominant language
- Rust
- Stars
- 39.1k
- Forks
- 1.9k
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 4
Description
**Problem**
I set **base_path** to "my_app" for an Dioxus app behind a **Nginx** reverse-proxy.
Accessing `http://127.0.0.1/my_app/` produce two errors:
1. A panic caused by an `unwrap()` in [`fullstack/src/client.rs:51`](https://github.com/DioxusLabs/dioxus/blob/v0.7.1/packages/fullstack/src/client.rs#L51). This is clearly related to https://github.com/DioxusLabs/dioxus/issues/5032. I still provide the full error message below.
Collapsed error message
```js
panicked at /home/me/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/dioxus-fullstack-0.7.6/src/client.rs:51:10:
called `Result::unwrap()` on an `Err` value: RelativeUrlWithoutBase
Stack:
__wbg_get_imports/__wbg_new_3aa437571599bf83/<@http://127.0.0.1/my_app/wasm/myapp.js:1383:25
logError@http://127.0.0.1/my_app/wasm/myapp.js:2426:18
__wbg_new_3aa437571599bf83@http://127.0.0.1/my_app/wasm/myapp.js:1382:57
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[24496]:0x3f30fb
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[12780]:0x371096
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[4248]:0x25f779
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[18365]:0x3be28e
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[4916]:0x283452
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[8381]:0x30a1a1
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[24897]:0x3f44ec
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[18547]:0x3c0213
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[14616]:0x38edd7
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[10323]:0x33e945
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[923]:0x106410
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2563]:0x1e827d
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[517]:0x861d4
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2102]:0x1bc350
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2850]:0x200dc6
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2087]:0x1ba942
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[8445]:0x30bfd9
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2268]:0x1cd2e2
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[514]:0x84f44
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[626]:0xb377a
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[1525]:0x174167
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[642]:0xb8da0
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[5528]:0x2a0580
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[12546]:0x36cd08
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[12542]:0x36cbdb
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[14286]:0x389e44
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[7231]:0x2e41ed
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[13428]:0x37c56e
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[1605]:0x17fd6c
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[15698]:0x39df14
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[389]:0x264ca
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[1983]:0x1af195
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[7594]:0x2f0ee9
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2736]:0x1f760f
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2536]:0x1e5d18
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[12024]:0x363224
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[10848]:0x34aa0c
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[10313]:0x33e54f
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[9939]:0x3351fa
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[3561]:0x234b28
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[24288]:0x3f2186
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[19971]:0x3ce981
_ZN12wasm_bindgen7convert8closures1_6invoke17hf66e23168b516955E@http://127.0.0.1/my_app/wasm/myapp.js:2222:22
real@http://127.0.0.1/my_app/wasm/myapp.js:2476:20
VoidFunction*__wbg_get_imports/__wbg_queueMicrotask_5d15a957e6aa920e/<@http://127.0.0.1/my_app/wasm/myapp.js:1584:27
logError@http://127.0.0.1/my_app/wasm/myapp.js:2426:18
__wbg_queueMicrotask_5d15a957e6aa920e@http://127.0.0.1/my_app/wasm/myapp.js:1583:68
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[25057]:0x3f4b05
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[14166]:0x3880dc
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[4877]:0x2814df
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[18138]:0x3bbac7
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[18151]:0x3bbd26
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[19812]:0x3ccf4d
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[22187]:0x3e3345
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[10606]:0x3452ab
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[16786]:0x3abebb
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[14397]:0x38b90c
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2436]:0x1dce08
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[20610]:0x3d4a8a
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[19047]:0x3c52bc
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[13694]:0x380aca
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[15802]:0x39f555
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[14747]:0x390d81
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[17817]:0x3b7ef6
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[17194]:0x3b0b3c
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[17813]:0x3b7e38
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[17815]:0x3b7e94
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[11145]:0x3512b2
_ZN12wasm_bindgen7convert8closures1_6invoke17h84b05a18d8b63af2E@http://127.0.0.1/my_app/wasm/myapp.js:2173:10
real@http://127.0.0.1/my_app/wasm/myapp.js:2476:20
setTimeout handler*__wbg_get_imports/__wbg_setTimeout_ef24d2fc3ad97385/<@http://127.0.0.1/my_app/wasm/myapp.js:1779:35
handleError@http://127.0.0.1/my_app/wasm/myapp.js:2413:18
__wbg_setTimeout_ef24d2fc3ad97385@http://127.0.0.1/my_app/wasm/myapp.js:1778:64
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[23822]:0x3ef801
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[3269]:0x220ca5
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[7817]:0x2f843e
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[8400]:0x30aa95
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[389]:0x255a4
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[1983]:0x1af195
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[7594]:0x2f0ee9
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2736]:0x1f760f
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[2536]:0x1e5d18
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[12024]:0x363224
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[10848]:0x34aa0c
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[10313]:0x33e54f
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[9939]:0x3351fa
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[3561]:0x234b28
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[24288]:0x3f2186
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[19971]:0x3ce981
_ZN12wasm_bindgen7convert8closures1_6invoke17hf66e23168b516955E@http://127.0.0.1/my_app/wasm/myapp.js:2222:22
real@http://127.0.0.1/my_app/wasm/myapp.js:2476:20
VoidFunction*__wbg_get_imports/__wbg_queueMicrotask_5d15a957e6aa920e/<@http://127.0.0.1/my_app/wasm/myapp.js:1584:27
logError@http://127.0.0.1/my_app/wasm/myapp.js:2426:18
__wbg_queueMicrotask_5d15a957e6aa920e@http://127.0.0.1/my_app/wasm/myapp.js:1583:68
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[25057]:0x3f4b05
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[14166]:0x3880dc
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[4877]:0x2814df
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[17677]:0x3b6521
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[18802]:0x3c2b6b
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[1292]:0x14f7b7
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[16143]:0x3a3c50
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[4020]:0x251ffa
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[1068]:0x12564d
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[1009]:0x11923a
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[16093]:0x3a31ee
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[24857]:0x3f4367
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[21197]:0x3da5a8
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[21154]:0x3d9f9b
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[14233]:0x389136
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[6463]:0x2c7bce
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[11704]:0x35ce92
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[24519]:0x3f32d2
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[24647]:0x3f39a4
@http://127.0.0.1/my_app/wasm/myapp_bg.wasm:wasm-function[25176]:0x3f4e56
__wbg_finalize_init@http://127.0.0.1/my_app/wasm/myapp.js:2594:10
__wbg_init@http://127.0.0.1/my_app/wasm/myapp.js:2676:12
async*@http://127.0.0.1/my_app/wasm/myapp.js:2686:11
patch_console.js:1:735
```
2. The second issue is a websocket request on `ws://127.0.0.1/_dioxus?build_id=0` _(404)_ instead of `ws://127.0.0.1/my_app/_dioxus?build_id=0` _(200)_
**Steps To Reproduce**
1. **Dioxus.toml**
```yml
[application]
[web.app]
# HTML title tag content
title = "MyApp"
base_path = "my_app"
# include `assets` in web platform
[web.resource]
# Additional CSS style files
style = []
# Additional JavaScript files
script = []
[web.resource.dev]
# Javascript code file
# serve: [dev-server] only
script = []
```
2. **Minimal nginx configuration**
```nginx
events {}
http {
server {
listen 80;
server_name 127.0.0.1;
location /my_app {
# Proxy to Dioxus dev server (default: 127.0.0.1:8080)
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
```
Steps to reproduce the behavior:
- `dx serve --web --port 8080 --addr 0.0.0.0`
- Open browser on `http://127.0.0.1/my_app` and inspect network requests. A GET on `ws://127.0.0.1/_dioxus?build_id=0` should appear.
- Test with `wscat`:
```bash
~$ wscat -c "ws://127.0.0.1/_dioxus"
error: Unexpected server response: 404
```
expected:
```bash
~$ wscat -c "ws://127.0.0.1/my_app/_dioxus"
Connected (press CTRL+C to quit)
Disconnected (code: 1006, reason: "")
```
**Environment:**
- Dioxus version: 0.7.6
- Rust version: 1.94.1
- OS info: Fedora Linux 43 (7.0.9-105.fc43.x86_64)
- App platform: web (fullstack)
**Questionnaire**
First issue is clearly related to https://github.com/DioxusLabs/dioxus/issues/5032
Second one I don't know if it is misconfiguration of my Dioxus app, my Nginx configuration or an issue in Dioxus itself that doesn't append `base_path` to its websocket calls.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.