Модификация и поддержка коннектора из HTTP POST в WebSocket на GoLang

Цена договорная • наличный расчёт, безналичный расчёт, электронные деньги
15 октября 2018, 13:34 • 6 откликов • 43 просмотра
Имеется пул задач, профилирующие направление backend-разработка на Go Lang: Модификация и развитие интеграционного сервиса между сервером телефонии и пользовательскими приложениями. Работа удаленная. Задача: Разработка, модификация, поддержка интеграционного сервиса на Go, суть которого - получать события по TCP сокету с платформы телефонии (протокол AMI) и некоторые из них отправлять в WebSocket, сервером которого сам этот сервис будет являться. К вебсокету будут подключаться пользовательские приложения. Эти приложения будут слать команды в сокет, сервис должен их принимать и, в зависимости от полученной команды, посылать команду на сервер телефонии (тот же TCP сокет, протокол AMI) Т.е. сервис:
  • одним плечом должен подключаться к серверу телефонии,
  • другим плечом предоставлять сервер для websocket подключений (хаб - сообщения для всех пользователей);
  • принимать подключения по websocket-у от пользовательских приложений
  • посылать в websocket полученные события от сервера телефонии по TCP (AMI) (минимум преобразований: из многострочного текста в JSON)
  • принимать по websocket от пользовательских приложений запросы (команды)
  • посылать на сервер телефонии в TCP (AMI) команды, подставляю туда значения из запроса пользователя
За основу к разработке предоставим имеющийся сервис интеграции (доступ к репозиторию с исходным кодом), который на текущий момент умеет:
  • одним плечом подключаться к серверу телефонии (TCP AMI)
  • посылать методом HTTP POST полученные события от сервера телефонии по TCP (AMI) (есть преобразования: из многострочного текста в JSON)
  • принимать запросы по HTTP GET от пользователей
  • посылать на сервер телефонии в TCP (AMI) команды, подставляю туда значения из запроса пользователя
Авторизация на вебсокете не требуется. Подписка на вебсокете не требуется. Однако нужно заложить возможность добавления этого функционала в дальнейшем. Для работы будет предоставлено:
  • тестовая среда: сервер телефонии к которому можно подключиться и читать/посылать события/команды
  • список событий от сервера телефонии, которые нужно будет отправлять подключенным клиентам (в соответствии с имеющимся сервисом, который работает на http post)
  • требования к формату сообщений, отправляемых по websocket-у подключенным клиентам
  • требования к формату команд, получаемых от клиентов по websocket-у
  • доступ к репозиторию с имеющимся сервисом интеграции
  • "обзорную экскурсию" по коду (хотя по факту его не много) имеющегося сервиса интеграции (подробно знаем, как работает и что за что отвечает)
Для решения задачи необходимы следующие знания:
• Golang
• Git
• HTTP, REST, WebSocket

Стоимость варьируется от объема задач и обсуждается с исполнителем

Текущие задачи:
1. выявить и устранить проблему, связанную с периодическим зависанием сервиса. Перестает передавать ответы на запрос.
2. Добавление новых событий / авторизацию / выдача информации клиентов, которые её запросили.