Nest JS Гибридный сервер HTTP и TCP - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь создать простой бэкэнд в гнезде js, который обрабатывает как HTTP-запросы (из мобильных / веб-приложений), так и TCP-запросы для какого-то датчика iot, с которым я играю.

Что лучше способ go об этом? Я видел концепцию «гибридных» приложений, но не могу найти хороший практический пример того, как ее реализовать.

В настоящее время у меня есть http-сервер, на котором запущено express в гнезде, и я регистрация клиентского модуля в app.module следующим образом:

ClientsModule.register([
      {
        name: 'TCP_SERVER',
        transport: Transport.TCP,
        options: {
          host: '127.0.0.1',
          port: 3333,
        },
      },
    ]),

Затем я отдельно (в другом проекте из другой командной строки) запускаю простой микросервис (в настоящее время не TCP-сервер), который отвечает через HTTP-транспорт .

У меня двоякий вопрос:

  1. Можно ли загружать все в одном проекте одновременно?
  2. если в отдельном проекте, должен ли я делать простой TCP-сервер, как я бы сделал в обычном nodejs, а также микросервис, который общается с HTTP-сервером? Примерно так:
async function bootstrap() {

  const server = net.createServer(socket => {
    socket.write('\r\rFrom NestJs TcpServerService\r\n');
    socket.pipe(socket);
  });

  const app = await NestFactory.createMicroservice(AppModule, {
    transport: Transport.TCP,
    options: {
      host: '127.0.0.1',
      port: 3333,
    },
  });

  server.listen(1337, '127.0.0.1');
  app.listen(() => logger.log('Microservice A is listening'));
}
bootstrap();

Любая помощь приветствуется.

/ Manuel

...