/rpc-chat

Primary LanguageTypeScript

RPC Chat

Задача

Организовать общение 2 (и более) приложений через RPC на языке JavaScript, без использования каких-либо сетевых библиотек реализующие все это из коробки (пример gRPC). Отправляемое сообщение вводится в консоль приложения отправителя, на стороне приложения получателя выводится:

  • Текст сообщение;
  • Идентификатор приложения отправителя;
  • Идентификатор приложения получателя (если имеется);
  • Время отправления

Входной параметр:

  • Идентификатор приложения получателя / -1 (всем);
  • Текст сообщения;

Установка зависимостей и запуск

  1. Запуск сервиса

    • cd service
    • npm i
    • npm start
  2. Запуск экземляра клиента

    • cd client
    • npm i
    • npm start

Демо-видео

Watch the video

Реализация

Реализация RPC написана поверх websocket, хотя использованных JSON RPC протокол может быть реализован и над HTTP, TCP и т.д. В связи с этим было бы более грамотно передавать в конструктор не экземпляр http.createServer(), a RPCService классы-адаптеры (для работы над websocket, HTTP...) реализующие заранее определенный интерфейс на получение и отправку сообщений. Но реализация была бы очень времязатратна.