1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /**
- * @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;
|