connectSocket method

void connectSocket()

Implementation

void connectSocket() {
  _webSocket = WebSocket(peerId: peerId, roomId: roomId, url: serverUrl);

  // socket event
  _webSocket!.onOpen = joinRoom;
  _webSocket!.onFail = () {};
  _webSocket!.onDisconnected = () {
    if (_sendTransport != null) {
      _sendTransport!.close();
      _sendTransport = null;
    }
    if (_recvTransport != null) {
      _recvTransport!.close();
      _recvTransport = null;
    }
  };
  _webSocket!.onClose = () {
    if (_closed) return;
    close();
  };
  _webSocket!.onRequest = (request, accept, reject) {
    switch (request['method']) {
      case 'newConsumer':
        {
          if (!_canConsume) {
            reject(403, 'I do not want to consume');
            break;
          }
          try {
            _recvTransport!.consume(
              id: request['data']['id'],
              producerId: request['data']['producerId'],
              kind: RTCRtpMediaTypeExtension.fromString(request['data']['kind']),
              rtpParameters: RtpParameters.fromMap(request['data']['rtpParameters']),
              appData: Map<String, dynamic>.from(request['data']['appData']),
              peerId: request['data']['peerId'],
              accept: accept,
            );
          } catch (error) {
            rethrow;
          }
          break;
        }
      default:
        break;
    }
  };
  _webSocket!.onNotification = (notification) {
    switch (notification['method']) {
      case 'consumerClosed':
        {
          String consumerId = notification['data']['consumerId'];
          peersDataHolder!.consumerRemove(consumerId);
          break;
        }
      case 'consumerPaused':
        {
          String consumerId = notification['data']['consumerId'];
          peersDataHolder!.peerPausedConsumer(consumerId);
          break;
        }

      case 'consumerResumed':
        {
          String consumerId = notification['data']['consumerId'];
          peersDataHolder!.peerResumedConsumer(consumerId);
          break;
        }

      case 'newPeer':
        {
          final Map<String, dynamic> newPeer = Map<String, dynamic>.from(notification['data']);
          peersDataHolder!.peerAdd(newPeer);
          break;
        }

      case 'peerClosed':
        {
          String peerId = notification['data']['peerId'];
          peersDataHolder!.peerRemove(peerId);
          break;
        }

      default:
        break;
    }
  };
}