Ember Subs -

import tracked from '@glimmer/tracking'; import cached from '@glimmer/tracking'; class Person @tracked firstName; @tracked lastName;

disconnect() this.socket?.close();

constructor() super(...arguments); this.priceFeed.connect(); ember subs

If you really need a global event bus:

connect() this.socket = new WebSocket('wss://example.com/prices'); this.socket.onmessage = (event) => this.updatePrice(JSON.parse(event.data)); ; this.socket.onopen = () => this.isConnected = true; import tracked from '@glimmer/tracking'

// app/components/price-display.js import Component from '@glimmer/component'; import inject as service from '@ember/service'; export default class PriceDisplayComponent extends Component @service priceFeed; import cached from '@glimmer/tracking'