Saya ingin membuat URI WebSocket relatif terhadap URI halaman di sisi browser. Katakanlah, dalam kasus saya, ubah HTTP URI seperti
http://example.com:8000/path
https://example.com:8000/path
untuk
ws://example.com:8000/path/to/ws
wss://example.com:8000/path/to/ws
Yang saya lakukan sekarang adalah mengganti 4 huruf pertama "http" dengan "ws", dan menambahkan "/ to / ws" padanya. Apakah ada cara yang lebih baik untuk itu?
websocket
uri
relative-path
neuront
sumber
sumber
path/to/ws
? Kemana tepatnya ini mengarah? Terima kasihJawaban:
Jika server Web Anda memiliki dukungan untuk WebSockets (atau modul handler WebSocket) maka Anda dapat menggunakan host dan port yang sama dan hanya mengubah skema seperti yang Anda tunjukkan. Ada banyak pilihan untuk menjalankan server Web dan server / modul Websocket secara bersamaan.
Saya menyarankan agar Anda melihat bagian individual window.location global dan menggabungkannya kembali daripada melakukan substitusi blind string.
Perhatikan bahwa beberapa server web (yaitu yang berbasis Jetty) saat ini menggunakan jalur (bukan header pemutakhiran) untuk menentukan apakah permintaan tertentu harus diteruskan ke penangan WebSocket. Jadi, Anda mungkin dibatasi dalam apakah Anda dapat mengubah jalan sesuai keinginan Anda.
sumber
"/to/ws"
? Jika tidak, berapa nilai yang seharusnya untuk bagian itu?Ini adalah versi saya yang menambahkan port tcp jika bukan 80 atau 443:
Edit 1: Versi yang ditingkatkan sebagai saran dari @kanaka:
Edit 2: Saat ini saya membuat
WebSocket
ini:sumber
Menggunakan Window.URL API - https://developer.mozilla.org/en-US/docs/Web/API/Window/URL
Bekerja dengan http (s), port dll.
sumber
Dengan asumsi server WebSocket Anda mendengarkan pada port yang sama seperti dari mana halaman tersebut diminta, saya sarankan:
Kemudian, untuk kasus Anda, sebut sebagai berikut:
sumber
mudah:
sumber
/^http/
alih-alih'http'
hanya jikahttp
ada di dalam bilah URL.Di localhost, Anda harus mempertimbangkan jalur konteks.
sumber
Dalam naskah ketikan:
Pemakaian:
sumber