wampy
Version:
Amazingly fast, feature-rich, lightweight WAMP Javascript client (for browser and node.js)
59 lines (58 loc) • 1.83 kB
JavaScript
// src/constants.ts
var isNode = typeof process === "object" && Object.prototype.toString.call(process) === "[object process]";
// src/utils.ts
function isWebSocketSchemeSpecified(url) {
return /^ws(s)?:\/\//.test(url);
}
function getServerUrlForNode(url) {
return isWebSocketSchemeSpecified(url) ? url : null;
}
function getServerUrlForBrowser(url) {
if (url && isWebSocketSchemeSpecified(url)) {
return url;
}
const isSecureProtocol = globalThis.location.protocol === "https:";
const scheme = isSecureProtocol ? "wss://" : "ws://";
const port = globalThis.location.port ? `:${globalThis.location.port}` : "";
if (!url) {
return `${scheme}${globalThis.location.hostname}${port}/ws`;
}
if (url.startsWith("/")) {
return `${scheme}${globalThis.location.hostname}${port}${url}`;
}
return `${scheme}${url}`;
}
function getWebSocketFromWindowObject(parsedUrl, protocols) {
if (globalThis?.WebSocket) {
return new globalThis.WebSocket(parsedUrl, protocols);
}
return null;
}
function getWebSocket({ url, protocols, options, isBrowserMock } = {}) {
const { ws, additionalHeaders, wsRequestOptions } = options || {};
const isActualNode = isNode && !isBrowserMock;
if (!ws && isActualNode) {
return null;
}
const parsedUrl = isActualNode ? getServerUrlForNode(url) : getServerUrlForBrowser(url);
if (!parsedUrl) {
return null;
}
if (ws) {
return new ws(parsedUrl, protocols, null, additionalHeaders, wsRequestOptions);
}
return getWebSocketFromWindowObject(parsedUrl, protocols);
}
function getNewPromise() {
const deferred = {};
deferred.promise = new Promise(function(resolve, reject) {
deferred.onSuccess = resolve;
deferred.onError = reject;
});
return deferred;
}
export {
getNewPromise,
getWebSocket
};
//# sourceMappingURL=utils.js.map