This commit is contained in:
20
web3.js/src/util/url.ts
Normal file
20
web3.js/src/util/url.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import {format as urlFormat, parse as urlParse} from 'url';
|
||||
|
||||
export function makeWebsocketUrl(endpoint: string) {
|
||||
let url = urlParse(endpoint);
|
||||
const useHttps = url.protocol === 'https:';
|
||||
|
||||
url.protocol = useHttps ? 'wss:' : 'ws:';
|
||||
url.host = '';
|
||||
|
||||
// Only shift the port by +1 as a convention for ws(s) only if given endpoint
|
||||
// is explictly specifying the endpoint port (HTTP-based RPC), assuming
|
||||
// we're directly trying to connect to solana-validator's ws listening port.
|
||||
// When the endpoint omits the port, we're connecting to the protocol
|
||||
// default ports: http(80) or https(443) and it's assumed we're behind a reverse
|
||||
// proxy which manages WebSocket upgrade and backend port redirection.
|
||||
if (url.port !== null) {
|
||||
url.port = String(Number(url.port) + 1);
|
||||
}
|
||||
return urlFormat(url);
|
||||
}
|
Reference in New Issue
Block a user