Ideolys / efik

Apache License 2.0
7 stars 1 forks source link

Develop built-in express-like server but faster #3

Open dgrelaud opened 2 years ago

dgrelaud commented 2 years ago
unuseless commented 2 years ago

Maybe have a look at: https://github.com/unjs/h3 , it's used in nuxt 3.

dgrelaud commented 2 years ago

  const uWS = require('uWebSockets.js');

  const app = uWS.App().any('/*', handleRequest).listen(currentConfig.port, (token) => {
    if (token) {
      console.log('Listenin   g to port ' + currentConfig.port);
    } else {
      console.log('Failed to listen to port ' + currentConfig.port);
    }
  });

  function setRequest(rawRequest, rawResponse) {
      const method = rawRequest.getMethod().toUpperCase();
      const path = rawRequest.getUrl();
      const query = rawRequest.getQuery();
      const url = path + (query ? '?' + query : '');
      const remote_ip = rawResponse.getRemoteAddressAsText();
      const remote_proxy_ip = rawResponse.getProxiedRemoteAddressAsText();
      const _req = {
          method,
          path,
          query,
          url,
          remote_ip,
          remote_proxy_ip,
          connection : {
            remoteAddress : remote_ip
          },
          headers : {}
    }
    rawRequest.forEach((key, value) => (_req.headers[key] = value));
    return _req;
  }

/**
 * Handle incoming request
 *
 * @param  {Object}  req     The request
 * @param  {Object}  res     The resource
 */
function handleRequest (res, rawReq) {

    let req = setRequest(rawReq, res);
    // blabla
}