You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
979 B
44 lines
979 B
/** |
|
* @typedef {Object} WDSMetaObj |
|
* @property {boolean} enforceWs |
|
* @property {number} version |
|
*/ |
|
|
|
/** |
|
* Derives WDS metadata from a compatible socket client. |
|
* @param {Function} SocketClient A WDS socket client (SockJS/WebSocket). |
|
* @returns {WDSMetaObj} The parsed WDS metadata object. |
|
*/ |
|
function getWDSMetadata(SocketClient) { |
|
let enforceWs = false; |
|
if ( |
|
typeof SocketClient.name !== 'undefined' && |
|
SocketClient.name !== null && |
|
SocketClient.name.toLowerCase().includes('websocket') |
|
) { |
|
enforceWs = true; |
|
} |
|
|
|
let version; |
|
// WDS versions <=3.5.0 |
|
if (!('onMessage' in SocketClient.prototype)) { |
|
version = 3; |
|
} else { |
|
// WDS versions >=3.5.0 <4 |
|
if ( |
|
'getClientPath' in SocketClient || |
|
Object.getPrototypeOf(SocketClient).name === 'BaseClient' |
|
) { |
|
version = 3; |
|
} else { |
|
version = 4; |
|
} |
|
} |
|
|
|
return { |
|
enforceWs: enforceWs, |
|
version: version, |
|
}; |
|
} |
|
|
|
module.exports = getWDSMetadata;
|
|
|