JSTP — предшественник Metacom
JavaScript Transfer Protocol. Первый RPC-протокол Metarhia (2014-2018). Идеи JSTP легли в основу Metacom.
Что такое JSTP
RPC-протокол, в котором пакеты — это JSON5-объекты. Транспорт абстрагирован (TCP, WebSocket, Unix Domain Sockets). Прозрачный вызов удалённых методов.
Ключевые идеи (перешли в Metacom)
- Transport-agnostic — TCP для приложений, WebSocket для браузера, Unix-сокеты для IPC. Единый API.
- Introspection — клиент запрашивает интерфейс сервера, строит прокси.
- Прокси через EventEmitter — remote proxy расширяет EventEmitter, можно подписываться на события.
- Pluggable форматы — JSON5/JSON/protobuf можно подменять.
- JSTP CLI — REPL для отладки любого JSTP-сервера.
Цитата
«TCP можно использовать и для IPC в рамках одной машины. И при этом всё происходит с одинаковым интерфейсом, унифицированным, и полностью абстрагирует от вас реальный транспорт.»
Структура приложения JSTP
const app = jstp.createApplication('TestApp', {
myService: {
method1(value, callback) { ... },
method2(value, callback) { ... },
},
});
- Application содержит interfaces (методы).
- На клиенте после introspection — прокси-объект
app.myService.method1(...). - Прокси — instance EventEmitter, можно слушать события.
Что улучшил Metacom
- WebSocket по умолчанию — браузерная среда стала первичной.
- Один канал для RPC + файлов + событий + state — JSTP был только про RPC.
- HTTP/2 и WebRTC — новые транспорты.
- Отвязка от Impress — Metacom можно запускать на чистой Node.
Бонусом JSON5
JSTP реализовал быстрый JSON5-парсер с code coverage 85%. JSON5 — JSON с комментариями, без обязательных кавычек на ключах, trailing commas.
История
- 2014-2018 — JSTP, основной протокол Metarhia.
- 2019+ — Metacom как наследник.
- 2025 — Metacom отвязан от Impress, стал самодостаточным.
🎓 Источники
- 🎓 Архив 2017 — JSTP JavaScript Transfer Protocol · Алексей Орленко · 2019-12-28
- Цитата: «В качестве транспорта мы поддерживаем TCP, WebSockets и Unix Domain Sockets… И при этом всё происходит с одинаковым интерфейсом.»