HttpServer constructor
HttpServer(
- dynamic _serverSocket,
- HttpRequestHandler requestHandler,
- void onSocketError(
- dynamic error,
- StackTrace stack
- void onProtocolError(
- dynamic error,
- StackTrace stack
- void onStreamError(
- dynamic error,
- StackTrace stack
Implementation
HttpServer(
this._serverSocket,
this.requestHandler,
this.onSocketError,
this.onProtocolError,
this.onStreamError,
) {
if (_serverSocket is! io.ServerSocket &&
_serverSocket is! io.SecureServerSocket) {
throw Exception('No server socket.');
}
_serverSocket.listen(
(socket) {
socket.setOption(io.SocketOption.tcpNoDelay, true);
if (socket is io.SecureSocket) {
// ALPN first
switch (socket.selectedProtocol) {
case 'h2':
case 'h2-14':
_handleHttp2Socket(socket);
return;
case 'http/1.1':
case null:
// default to http1.1
_http1Adapter.add(socket);
return;
default:
socket.destroy();
throw ApiException(
'Unexpected ALPN protocol: ${socket.selectedProtocol}.',
);
}
} else {
HttpConnection.detectProtocol(
socket,
_http1Adapter.add,
_handleHttp2Socket,
onProtocolError,
);
}
},
onDone: _socketDone,
onError: onSocketError,
cancelOnError: false,
);
_http1 = io.HttpServer.listenOn(_http1Adapter);
_http1.listen(_handleHttp1Request);
}