Eu quero construir um URI de WebSocket em relação ao URI da página no lado do navegador. Digamos, no meu caso, converter URIs HTTP como
http://example.com:8000/path
https://example.com:8000/path
para
ws://example.com:8000/path/to/ws
wss://example.com:8000/path/to/ws
O que estou fazendo atualmente é substituir as primeiras 4 letras "http" por "ws" e acrescentar "/ to / ws" a ele. Existe alguma maneira melhor para isso?
websocket
uri
relative-path
neuronte
fonte
fonte
path/to/ws
? Aonde isso leva exatamente? ObrigadoRespostas:
Se o seu servidor Web tiver suporte para WebSockets (ou um módulo manipulador WebSocket), você pode usar o mesmo host e porta e apenas alterar o esquema como está sendo mostrado. Existem muitas opções para executar um servidor Web e um servidor / módulo Websocket juntos.
Eu sugeriria que você olhasse para as partes individuais do window.location global e junte-as novamente em vez de fazer a substituição cega de strings.
Observe que alguns servidores web (ou seja, os baseados em Jetty) atualmente usam o caminho (em vez do cabeçalho de atualização) para determinar se uma solicitação específica deve ser passada para o manipulador WebSocket. Portanto, você pode estar limitado quanto à possibilidade de transformar o caminho da maneira que deseja.
fonte
"/to/ws"
? Se não, qual deve ser o valor dessa parte?Aqui está minha versão que adiciona a porta tcp caso não seja 80 ou 443:
Edição 1: versão aprimorada conforme sugestão de @kanaka:
Edição 2: Hoje em dia eu crio
WebSocket
este:fonte
Usando a API Window.URL - https://developer.mozilla.org/en-US/docs/Web/API/Window/URL
Funciona com http (s), portas etc.
fonte
Supondo que seu servidor WebSocket esteja escutando na mesma porta em que a página está sendo solicitada, sugiro:
Então, para o seu caso, chame-o da seguinte forma:
fonte
fácil:
fonte
/^http/
vez de'http'
apenas no caso dehttp
estar dentro da barra de URL.No localhost, você deve considerar o caminho do contexto.
fonte
No texto datilografado:
Uso:
fonte