connect method

  1. @VoltronMethod(funcConnect)
bool connect(
  1. VoltronMap params,
  2. JSPromise promise
)

Implementation

@VoltronMethod(funcConnect)
bool connect(VoltronMap params, final JSPromise promise) {
  var url = params.get<String>('url');
  var headers = params.get<VoltronMap>('headers');
  var protocals = headers?.get<String>('Sec-WebSocket-Protocol')?.split(',');

  if (url == null) {
    var returnValue = VoltronMap();
    returnValue.push<int>('code', -1);
    returnValue.push<String>('reason', 'no valid url for websocket');
    promise.reject(returnValue);
    return false;
  }

  _autoInt += 1;
  var webSocketId = _autoInt;
  // 实例化一个 websocket 实例
  var webSocketClient = WebSocketClient(
    url: url,
    listener: WebSocketListener(webSocketId, context, this),
    protocols: protocals,
    headers: headers?.toMap(),
  );
  mWebSocketConnections[webSocketId] = webSocketClient;

  var returnValue = VoltronMap();
  returnValue.push<int>('code', 0);
  returnValue.push<String>('reason', "");
  returnValue.push<int>('id', webSocketId);
  promise.resolve(returnValue);

  webSocketClient.connect();
  return true;
}