MethodChannelWebSocketSupport constructor

MethodChannelWebSocketSupport(
  1. WebSocketListener _listener
)

Implementation

MethodChannelWebSocketSupport(this._listener)
    : _methodChannel = const MethodChannel(methodChannelName),
      _textMessagesChannel = const EventChannel(textEventChannelName),
      _byteMessagesChannel = const EventChannel(byteEventChannelName) {
  // set method channel listener
  _methodChannel.setMethodCallHandler((MethodCall call) {
    switch (call.method) {
      case 'onOpened':
        // ws established
        _listener.onWsOpened(DefaultWebSocketConnection(_methodChannel));
        _addStreamEventListeners();
        break;
      case 'onClosing':
        final args = call.arguments as Map;
        final code = args['code'] ?? 4000; // map[] returns nullable value
        _listener.onWsClosing(code, args['reason'] ?? '');
        break;
      case 'onClosed':
        // ws closed
        final args = call.arguments as Map;
        final code = args['code'] ?? 4000; // map[] returns nullable value
        _listener.onWsClosed(code, args['reason'] ?? '');
        _removeStreamEventListeners();
        break;
      case 'onFailure':
        final args = call.arguments as Map;
        _listener.onError(WebSocketException(args['throwableType'],
            args['errorMessage'], args['causeMessage']));
        break;
      case 'onStringMessage':
        _listener.onStringMessage(call.arguments as String);
        break;
      case 'onByteArrayMessage':
        _listener.onByteArrayMessage(call.arguments as Uint8List);
        break;
      default:
        throw PlatformException(
            code: methodChannelExceptionCode,
            message: unexpectedMethodNameMessage,
            details: call.method);
    }
    return Future.value(null);
  });
}