connectToSignalServer method

Future<void> connectToSignalServer()

Implementation

Future<void> connectToSignalServer() async {
  try {
    if (_channel.closeCode == null) {
      await _channel.sink.close();
    }

    String signalUrl = "ws://$SERVER_ADDR_PORT/ws/signaling";
    String params = _buildDeviceParams();
    signalUrl += params;

    _channel = WebSocketChannel.connect(Uri.parse(signalUrl));

    _channel.stream.listen(
      (message) => _handleSignalMessage(message),
      onError: (error) {
        onServerDisconnect?.call(0, error.toString());
        Future.delayed(const Duration(seconds: 3), connectToSignalServer);
      },
      onDone: () {
        onServerDisconnect?.call(0, "Connection closed");
        Future.delayed(const Duration(seconds: 3), connectToSignalServer);
      },
    );
  } catch (e) {
    onServerDisconnect?.call(0, e.toString());
    Future.delayed(const Duration(seconds: 3), connectToSignalServer);
  }
}