Quiero construir un URI de WebSocket relativo al URI de la página en el lado del navegador. Digamos, en mi caso, convierta HTTP URI como
http://example.com:8000/path
https://example.com:8000/path
a
ws://example.com:8000/path/to/ws
wss://example.com:8000/path/to/ws
Lo que estoy haciendo actualmente es reemplazar las primeras 4 letras "http" por "ws", y agregarle "/ a / ws". ¿Hay alguna forma mejor de hacerlo?
websocket
uri
relative-path
neurona
fuente
fuente
path/to/ws
? ¿A dónde lleva esto exactamente? GraciasRespuestas:
Si su servidor web es compatible con WebSockets (o un módulo controlador de WebSocket), entonces puede usar el mismo host y puerto y simplemente cambiar el esquema como se muestra. Hay muchas opciones para ejecutar un servidor web y un servidor / módulo Websocket juntos.
Le sugiero que mire las piezas individuales de window.location global y las vuelva a unir en lugar de realizar una sustitución ciega de cadenas.
Tenga en cuenta que algunos servidores web (es decir, los basados en Jetty) utilizan actualmente la ruta (en lugar del encabezado de actualización) para determinar si una solicitud específica debe transmitirse al controlador WebSocket. Por lo tanto, es posible que tenga limitaciones en cuanto a si puede transformar el camino de la manera que desee.
fuente
"/to/ws"
? Si no es así, ¿cuál debería ser el valor de esa parte?Aquí está mi versión que agrega el puerto tcp en caso de que no sea 80 o 443:
Edición 1: versión mejorada por sugerencia de @kanaka:
Edición 2: Hoy en día creo
WebSocket
esto:fuente
Usando la API Window.URL - https://developer.mozilla.org/en-US/docs/Web/API/Window/URL
Funciona con http (s), puertos, etc.
fuente
Suponiendo que su servidor WebSocket está escuchando en el mismo puerto desde el que se solicita la página, sugeriría:
Luego, para su caso, llámelo de la siguiente manera:
fuente
fácil:
fuente
/^http/
lugar de'http'
solo en caso de quehttp
esté dentro de la barra de URL.En localhost, debe considerar la ruta de contexto.
fuente
Mecanografiado:
Uso:
fuente