Skip to content

Instantly share code, notes, and snippets.

View suspense-dev's full-sized avatar

Alex Krasnov suspense-dev

  • Moscow, Russia
View GitHub Profile
@suspense-dev
suspense-dev / format.md
Last active January 19, 2023 17:48
WebSocket messaging protocol

Draft of communication protocol on WebSocket

Handshake with WebSocket

In order to switch communication protocol from HTTP to WebSocket we need to implement a "handshake". Handshake is HTTP request with certain headers which tells the server that we want to connect to it via WebSocket protocol in order to keep further communication upon it.

But the server needs to authorize anyone who wants to connect to it by WebSocket. Therefore the client needs a secret key which will be attached to handshake.

In order to get this secret key the login mechanism is supposed to use HTTP request. After we authorize with login, we get a secret key in response. This key must be used in the "handshake" to let the server know that we have rights for it.

After successful "handshake" we are ready to emit and receive messages.

@suspense-dev
suspense-dev / tsconfig.json
Created May 27, 2020 19:24 — forked from KRostyslav/tsconfig.json
tsconfig.json с комментариями.
// Файл "tsconfig.json":
// - устанавливает корневой каталог проекта TypeScript;
// - выполняет настройку параметров компиляции;
// - устанавливает файлы проекта.
// Присутствие файла "tsconfig.json" в папке указывает TypeScript, что это корневая папка проекта.
// Внутри "tsconfig.json" указываются настройки компилятора TypeScript и корневые файлы проекта.
// Программа компилятора "tsc" ищет файл "tsconfig.json" сначала в папке, где она расположена, затем поднимается выше и ищет в родительских папках согласно их вложенности друг в друга.
// Команда "tsc --project C:\path\to\my\project\folder" берет файл "tsconfig.json" из папки, расположенной по данному пути.
// Файл "tsconfig.json" может быть полностью пустым, тогда компилятор скомпилирует все файлы с настройками заданными по умолчанию.
// Опции компилятора, перечисленные в командной строке перезаписывают собой опции, заданные в файле "tsconfig.json".
@suspense-dev
suspense-dev / gzip.md
Created August 21, 2020 17:35 — forked from Busyrev/gzip.md
О сжатии на протокольном уровне (http)

О сжатии на протокольном уровне (http)

Актулизировано на момент 03.12.2018 Док несколько потерял в актуальности, см презентацию https://docs.google.com/presentation/d/1bw0ypsrdyC2l35Z-h65D09ABQDSZ_Ecfp02-zE6Fmqc Если кратко то brotli 0 в 4 раза быстрее чем gzip 1, при том же сжатии И brotli 4 столь же быстр как gzip 1 на круче чем gzip 9

Обозреваемые форматы сжатия:

  • gzip 1 - минимальный уровень сжатия gzip, результат .gz
  • gzip 9 - максимальный уровень сжатия gzip, результат .gz
  • zopfli - отдельный алгоритм совместимый с распаковщиком gzip, результат .gz