Skip to content

WebSocket server for connect browser and desktop application

Notifications You must be signed in to change notification settings

stepan-s/ws-bro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebSocket сервер для организации управления приложениями из браузера

Авторизованные пользователи привязывают приложения к своему аккаунту и управляют ими из браузера, с любого устройства подключенного к сети.

  • Приложениям не требуется какой либо интерфейс пользователя;
  • Не накладывается ограничения на механизм привязки приложения к аккаунту;
  • Управляющий браузер и приложение могут находится за NAT;
  • Привязка к аккаунту нескольких приложений;
  • Привязка приложения к нескольким аккаунтам;

Типовая схема взаимодействия:

+---------+   wss   +-----------+   wss   +-------------+
| Browser |<=======>| WS Server |<=======>| Application |
+---------+         +-----------+         +-------------+
       ^                  ^|                 ^
       |                  || https api       |
        \                 |v                /
         \          +-----------+          /
          `-------->|  Control  |<--------'
         https ajax |   server  | https api
                    +-----------+

Формат сообщений

Сообщения передаются к формате json.

Сообщения от пользователя являются управляющими и передаются конкретному приложению. Сообщения от приложения являются информирующими и передаются всем подключениям аккаунтов к которым привязано приложение. Также есть несколько уведомительных сообщений.

Браузер

Исходящее, отправка сообщения приложению:

{
  "Action": "sendData",
  "To": "123e4567-e89b-12d3-a456-426655440000", // Application installation uuid
  "Data": {
    // A payload data
  }
}

Входящее, получение сообщения приложения:

{
  "Action": "receivedData",
  "From": "123e4567-e89b-12d3-a456-426655440000", // Application installation uuid
  "Data": {
    // A payload data
  }
}

Исходящее, запрос на получение подключенных в данный момент приложений:

{
  "Action": "getConnected",
  "List": [
      // Application installation uuid
      "123e4567-e89b-12d3-a456-426655440000"
      //...
  ]
}

Входящее, список подключенных приложений, если отправляется в ответ на getConnected, то содержит полный список подключенных, либо при подключении приложения к серверу - в списке только одно приложение:

{
  "Action": "connected",
  "List": [
    {
      "Aid": "123e4567-e89b-12d3-a456-426655440000", // Application installation uuid
      "Ip": "255.255.255.255"
    }
  ]
}

Входящее, список отключившихся приложения от сервера:

{
  "Action": "disconnected",
  "List": [
    // Application installation uuid
    "123e4567-e89b-12d3-a456-426655440000"
  ]
}

Входящее, список привязанных приложений к аккаунту:

{
  "Action": "attached",
  "List": [
    // Application installation uuid
    "123e4567-e89b-12d3-a456-426655440000"
  ]
}

Входящее, список отвязанных приложений от аккаунта:

{
  "Action": "detached",
  "List": [
    // Application installation uuid
    "123e4567-e89b-12d3-a456-426655440000"
  ]
}

Приложение

Исходящее, отправка сообщения браузеру(-ам):

{
  "Action": "sendData",
  "Data": {
    // A payload data
  }
}

Входящее, получение сообщения браузера:

{
  "Action": "receivedData",
  "From": 1234567890, // User id
  "Data": {
    // A payload data
  }
}

API

Аутентификация запросов

Необходимо указать заголовок в запросе

Auth: <api key>

/user/send

Отправка сообщения пользователю (в браузеры)

Запрос
где параметр описание
GET uid int, идентификатор пользователя
POST body json, сообщение

/app/send

Отправка сообщения приложению

Запрос
где параметр описание
GET aid UUID, идентификатор приложения
POST body json, сообщение

При получении приложением, отправителем будет системный пользователь с uid = 1.

/user/sign-auth

Получение параметров аутентификации пользователя (браузера)

Запрос
где параметр описание
GET uid int, идентификатор пользователя
Ответ
где параметр описание
RESPONSE body string, QUERY строка с параметрами аутентификации для подключения к серверу

/app/sign-auth

Получение параметров аутентификации приложения

Запрос
где параметр описание
GET aid UUID, идентификатор приложения
Ответ
где параметр описание
RESPONSE body string, QUERY строка с параметрами аутентификации для подключения к серверу

/app/attach

Добавление приложения пользователя

Запрос
где параметр описание
GET uid int, идентификатор пользователя
GET aid UUID, идентификатор приложения

/app/detach

Удаление приложения пользователя

Запрос
где параметр описание
GET uid int, идентификатор пользователя
GET aid UUID, идентификатор приложения

About

WebSocket server for connect browser and desktop application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published