compat-client.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. import { Client } from '../client.js';
  2. import { HeartbeatInfo } from './heartbeat-info.js';
  3. /**
  4. * Available for backward compatibility, please shift to using {@link Client}.
  5. *
  6. * **Deprecated**
  7. *
  8. * Part of `@stomp/stompjs`.
  9. *
  10. * To upgrade, please follow the [Upgrade Guide](https://stomp-js.github.io/guide/stompjs/upgrading-stompjs.html)
  11. */
  12. export class CompatClient extends Client {
  13. /**
  14. * Available for backward compatibility, please shift to using {@link Client}
  15. * and [Client#webSocketFactory]{@link Client#webSocketFactory}.
  16. *
  17. * **Deprecated**
  18. *
  19. * @internal
  20. */
  21. constructor(webSocketFactory) {
  22. super();
  23. /**
  24. * It is no op now. No longer needed. Large packets work out of the box.
  25. */
  26. this.maxWebSocketFrameSize = 16 * 1024;
  27. this._heartbeatInfo = new HeartbeatInfo(this);
  28. this.reconnect_delay = 0;
  29. this.webSocketFactory = webSocketFactory;
  30. // Default from previous version
  31. this.debug = (...message) => {
  32. console.log(...message);
  33. };
  34. }
  35. _parseConnect(...args) {
  36. let closeEventCallback;
  37. let connectCallback;
  38. let errorCallback;
  39. let headers = {};
  40. if (args.length < 2) {
  41. throw new Error('Connect requires at least 2 arguments');
  42. }
  43. if (typeof args[1] === 'function') {
  44. [headers, connectCallback, errorCallback, closeEventCallback] = args;
  45. }
  46. else {
  47. switch (args.length) {
  48. case 6:
  49. [
  50. headers.login,
  51. headers.passcode,
  52. connectCallback,
  53. errorCallback,
  54. closeEventCallback,
  55. headers.host,
  56. ] = args;
  57. break;
  58. default:
  59. [
  60. headers.login,
  61. headers.passcode,
  62. connectCallback,
  63. errorCallback,
  64. closeEventCallback,
  65. ] = args;
  66. }
  67. }
  68. return [headers, connectCallback, errorCallback, closeEventCallback];
  69. }
  70. /**
  71. * Available for backward compatibility, please shift to using [Client#activate]{@link Client#activate}.
  72. *
  73. * **Deprecated**
  74. *
  75. * The `connect` method accepts different number of arguments and types. See the Overloads list. Use the
  76. * version with headers to pass your broker specific options.
  77. *
  78. * overloads:
  79. * - connect(headers, connectCallback)
  80. * - connect(headers, connectCallback, errorCallback)
  81. * - connect(login, passcode, connectCallback)
  82. * - connect(login, passcode, connectCallback, errorCallback)
  83. * - connect(login, passcode, connectCallback, errorCallback, closeEventCallback)
  84. * - connect(login, passcode, connectCallback, errorCallback, closeEventCallback, host)
  85. *
  86. * params:
  87. * - headers, see [Client#connectHeaders]{@link Client#connectHeaders}
  88. * - connectCallback, see [Client#onConnect]{@link Client#onConnect}
  89. * - errorCallback, see [Client#onStompError]{@link Client#onStompError}
  90. * - closeEventCallback, see [Client#onWebSocketClose]{@link Client#onWebSocketClose}
  91. * - login [String], see [Client#connectHeaders](../classes/Client.html#connectHeaders)
  92. * - passcode [String], [Client#connectHeaders](../classes/Client.html#connectHeaders)
  93. * - host [String], see [Client#connectHeaders](../classes/Client.html#connectHeaders)
  94. *
  95. * To upgrade, please follow the [Upgrade Guide](../additional-documentation/upgrading.html)
  96. */
  97. connect(...args) {
  98. const out = this._parseConnect(...args);
  99. if (out[0]) {
  100. this.connectHeaders = out[0];
  101. }
  102. if (out[1]) {
  103. this.onConnect = out[1];
  104. }
  105. if (out[2]) {
  106. this.onStompError = out[2];
  107. }
  108. if (out[3]) {
  109. this.onWebSocketClose = out[3];
  110. }
  111. super.activate();
  112. }
  113. /**
  114. * Available for backward compatibility, please shift to using [Client#deactivate]{@link Client#deactivate}.
  115. *
  116. * **Deprecated**
  117. *
  118. * See:
  119. * [Client#onDisconnect]{@link Client#onDisconnect}, and
  120. * [Client#disconnectHeaders]{@link Client#disconnectHeaders}
  121. *
  122. * To upgrade, please follow the [Upgrade Guide](../additional-documentation/upgrading.html)
  123. */
  124. disconnect(disconnectCallback, headers = {}) {
  125. if (disconnectCallback) {
  126. this.onDisconnect = disconnectCallback;
  127. }
  128. this.disconnectHeaders = headers;
  129. super.deactivate();
  130. }
  131. /**
  132. * Available for backward compatibility, use [Client#publish]{@link Client#publish}.
  133. *
  134. * Send a message to a named destination. Refer to your STOMP broker documentation for types
  135. * and naming of destinations. The headers will, typically, be available to the subscriber.
  136. * However, there may be special purpose headers corresponding to your STOMP broker.
  137. *
  138. * **Deprecated**, use [Client#publish]{@link Client#publish}
  139. *
  140. * Note: Body must be String. You will need to covert the payload to string in case it is not string (e.g. JSON)
  141. *
  142. * ```javascript
  143. * client.send("/queue/test", {priority: 9}, "Hello, STOMP");
  144. *
  145. * // If you want to send a message with a body, you must also pass the headers argument.
  146. * client.send("/queue/test", {}, "Hello, STOMP");
  147. * ```
  148. *
  149. * To upgrade, please follow the [Upgrade Guide](../additional-documentation/upgrading.html)
  150. */
  151. send(destination, headers = {}, body = '') {
  152. headers = Object.assign({}, headers);
  153. const skipContentLengthHeader = headers['content-length'] === false;
  154. if (skipContentLengthHeader) {
  155. delete headers['content-length'];
  156. }
  157. this.publish({
  158. destination,
  159. headers: headers,
  160. body,
  161. skipContentLengthHeader,
  162. });
  163. }
  164. /**
  165. * Available for backward compatibility, renamed to [Client#reconnectDelay]{@link Client#reconnectDelay}.
  166. *
  167. * **Deprecated**
  168. */
  169. set reconnect_delay(value) {
  170. this.reconnectDelay = value;
  171. }
  172. /**
  173. * Available for backward compatibility, renamed to [Client#webSocket]{@link Client#webSocket}.
  174. *
  175. * **Deprecated**
  176. */
  177. get ws() {
  178. return this.webSocket;
  179. }
  180. /**
  181. * Available for backward compatibility, renamed to [Client#connectedVersion]{@link Client#connectedVersion}.
  182. *
  183. * **Deprecated**
  184. */
  185. get version() {
  186. return this.connectedVersion;
  187. }
  188. /**
  189. * Available for backward compatibility, renamed to [Client#onUnhandledMessage]{@link Client#onUnhandledMessage}.
  190. *
  191. * **Deprecated**
  192. */
  193. get onreceive() {
  194. return this.onUnhandledMessage;
  195. }
  196. /**
  197. * Available for backward compatibility, renamed to [Client#onUnhandledMessage]{@link Client#onUnhandledMessage}.
  198. *
  199. * **Deprecated**
  200. */
  201. set onreceive(value) {
  202. this.onUnhandledMessage = value;
  203. }
  204. /**
  205. * Available for backward compatibility, renamed to [Client#onUnhandledReceipt]{@link Client#onUnhandledReceipt}.
  206. * Prefer using [Client#watchForReceipt]{@link Client#watchForReceipt}.
  207. *
  208. * **Deprecated**
  209. */
  210. get onreceipt() {
  211. return this.onUnhandledReceipt;
  212. }
  213. /**
  214. * Available for backward compatibility, renamed to [Client#onUnhandledReceipt]{@link Client#onUnhandledReceipt}.
  215. *
  216. * **Deprecated**
  217. */
  218. set onreceipt(value) {
  219. this.onUnhandledReceipt = value;
  220. }
  221. /**
  222. * Available for backward compatibility, renamed to [Client#heartbeatIncoming]{@link Client#heartbeatIncoming}
  223. * [Client#heartbeatOutgoing]{@link Client#heartbeatOutgoing}.
  224. *
  225. * **Deprecated**
  226. */
  227. get heartbeat() {
  228. return this._heartbeatInfo;
  229. }
  230. /**
  231. * Available for backward compatibility, renamed to [Client#heartbeatIncoming]{@link Client#heartbeatIncoming}
  232. * [Client#heartbeatOutgoing]{@link Client#heartbeatOutgoing}.
  233. *
  234. * **Deprecated**
  235. */
  236. set heartbeat(value) {
  237. this.heartbeatIncoming = value.incoming;
  238. this.heartbeatOutgoing = value.outgoing;
  239. }
  240. }
  241. //# sourceMappingURL=compat-client.js.map