You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pencocokan sadar-batas, jadi path harus sama persis dengan `listener` atau berlanjut dengan `/`. Dengan `listener: '/ws'`, request ke `/ws` atau `/ws/chat` di-upgrade, tapi `/wsfoo` tidak. Garis miring di akhir `listener` dipangkas, jadi `/ws/` berperilaku sama dengan `/ws`. Mengatur `listener: '/'` mencocokkan setiap path.
46
+
45
47
**Penting:** Middleware hanya mengupgrade request yang:
46
48
47
49
- Membawa header `Upgrade: websocket`
48
50
- Memakai metode `GET`
49
-
-Punya path yang dimulai dengan nilai`listener`
51
+
-Cocok dengan path`listener` seperti dijelaskan di atas
50
52
51
53
Tanpa `listener`, middleware meneruskan setiap request dan tidak pernah mengupgrade.
Handshake yang ditolak diarahkan lewat error handler alih-alih melempar saat setup:
227
229
228
-
-**Origin tidak diizinkan**mengembalikan **403**dengan pesan `WebSocket handshake rejected because the Origin is not allowed`.
229
-
-**Upgrade tidak valid**mengembalikan **400**dengan pesan `WebSocket handshake is malformed because ...`.
230
+
-**Origin tidak diizinkan**gagal dengan **403**dan pesan `WebSocket handshake rejected because the Origin is not allowed`.
231
+
-**Upgrade tidak valid**gagal dengan **400**dan pesan `WebSocket handshake is malformed because ...`.
230
232
231
-
Untuk membentuk response ini, daftarkan satu handler dengan [`router.catch()`](/id/error-handling/object-details), atau andalkan [perilaku default](/id/error-handling/default-behavior).
233
+
Keduanya dialirkan ke [error handler terpusat](/id/error-handling/object-details), jadi bentuk response di sana atau andalkan [perilaku default](/id/error-handling/default-behavior).
Matching is boundary-aware, so the path must equal the `listener` exactly or continue with a `/`. With `listener: '/ws'`, a request to `/ws` or `/ws/chat` upgrades, but `/wsfoo` does not. A trailing slash on the `listener` is stripped, so `/ws/` behaves the same as `/ws`. Setting `listener: '/'` matches every path.
46
+
45
47
**Important:** The middleware only upgrades requests that:
46
48
47
49
- Carry the `Upgrade: websocket` header
48
50
- Use the `GET` method
49
-
-Have a path that starts with the `listener`value
51
+
-Match the `listener`path as described above
50
52
51
53
Without a `listener`, the middleware passes every request through and never upgrades.
A rejected handshake routes through the error handler instead of throwing at setup:
227
229
228
-
-**Disallowed origin**returns **403**with message `WebSocket handshake rejected because the Origin is not allowed`.
229
-
-**Malformed upgrade**returns **400**with message `WebSocket handshake is malformed because ...`.
230
+
-**Disallowed origin**fails with **403**and message `WebSocket handshake rejected because the Origin is not allowed`.
231
+
-**Malformed upgrade**fails with **400**and message `WebSocket handshake is malformed because ...`.
230
232
231
-
To shape these responses, register a single handler with [`router.catch()`](/error-handling/object-details), or rely on the [default behavior](/error-handling/default-behavior).
233
+
Both route through the [central error handler](/error-handling/object-details), so shape the response there or rely on the [default behavior](/error-handling/default-behavior).
0 commit comments