onPollRequest method

void onPollRequest(
  1. SocketConnect connect
)

The client sends a request awaiting for us to send data.

@api private

Implementation

void onPollRequest(SocketConnect connect) {
  if (this.connect != null) {
    _logger.fine('request overlap');
    // assert: this.res, '.req and .res should be (un)set together'
    onError('overlap from client');
    this.connect!.response.statusCode = 500;
    this.connect!.close();
    return;
  }

  _logger.fine('setting request');

  this.connect = connect;

  var onClose = () {
    onError('poll connection closed prematurely');
  };

  var cleanup = () {
    _reqCloses.remove(connect);
    this.connect = null;
  };

  _reqCleanups[connect] = cleanup;
  _reqCloses[connect] = onClose;

  writable = true;
  emit('drain');

  // if we're still writable but had a pending close, trigger an empty send
  if (writable == true && shouldClose != null) {
    _logger.fine('triggering empty send to append close packet');
    send([
      {'type': 'noop'}
    ]);
  }
}