async start()

in experimental/sdk/y-azure-webpubsub/src/WebPubSubSyncHost.ts [101:137]


  async start() {
    const url = await this.negotiate(this.topic);
    const conn = new this._polyfill(url, "json.webpubsub.azure.v1");

    const server = this;
    const group = this.topic;

    conn.onmessage = (e) => {
      const event: Message = JSON.parse(e.data.toString());

      if (event.type === "message" && event.from === "group") {
        switch (event.data.t) {
          case MessageDataType.Init:
            server.onClientInit(group, event.data);
            server.onClientSync(group, event.data);
            return;
          case MessageDataType.Sync:
            server.onClientSync(group, event.data);
            return;
          case MessageDataType.Awareness:
            server.onAwareness(group, event.data);
            return;
        }
      }
    };

    conn.onopen = () => {
      conn.send(
        JSON.stringify({
          type: MessageType.JoinGroup,
          group: `${group}.host`,
        })
      );
    };

    this._conn = conn;
  }