connect method

void connect()

Connect to WebSocket server

Implementation

void connect() async {
  try {
    _webSocket = await WebSocket.connect(webSocketUrl);

    _webSocket.listen(
      (message) async {
        var event = jsonDecode(message);

        if (event['event'] == 'pusher:connection_established') {
          var data = jsonDecode(event['data']);
          String socketId = data['socket_id'];
          Response response = await _authenticateWebSocket(socketId, channelName);

          _webSocket.add(
            '{"event":"pusher:subscribe","data":{"auth":"${response.data['auth']}","channel":"$channelName"}}',
          );
        }

        Map<String, dynamic> outerMap = jsonDecode(message);
        if (outerMap['data'] != null) {
          Map<String, dynamic> innerMap = jsonDecode(outerMap['data']);

          if (innerMap['type'] != null) {
            onEventReceived?.call(jsonEncode(innerMap));
          }
        }

        _messageController.add(message);
      },
      onDone: () => reconnect(),
    );
  } catch (e) {
    print("ERROR: $e");
    reconnect();
  }
}