$canvas->compositeImage($picture, \Imagick::COMPOSITE_COPYOPACITY, 0, 0, \Imagick::CHANNEL_ALPHA);
// ....
$canvas->compositeImage($piece, \Imagick::COMPOSITE_COPYOPACITY, $gap * $i + $piece_width * $i, 0, \Imagick::CHANNEL_ALPHA);
Как я понял, для вебсокета спецсервер нужен.
SSE vs. WS
Периодически встречаю упоминания, чуть ли не с гордостью, что вот мол мы для синхронизации веб-приложения гоняем server-sent events. Подразумевается, что это осознанный выбор, между WebSocket и SSE выбрали SSE. Я пытаюсь составить для себя карту факторов, которые к такому решению приводят. Сам я вижу вот что:
− SSE односторонний, WS двухсторонний
− SSE не поддерживается IE и мобильным IE, даже самыми последними. WS есть уже везде
− WS умеет binary payload, SSE не умеет (в худших традициях — newline-delimeted протокол). Серьезно, вот как JSON выглядит on the wire:
data: {\n
data: "msg": "hello world",\n
data: "id": 12345\n
data: }\n\n
+ SSE умеет сжатие через gzip, WS сжатие в процессе стандартизации
+ В js API у SSE идут встроенными такие вещи, как event id (дедупликация при реконнекте) и event type (subscribe topic). С другой стороны, это делается тривиально
Все упоминания о выборе между WS и SSE, которые я встречал, были примерно такого толка: «да оно нам как-то и не надо, нам SSE достаточно». Это больше не на осознанный выбор похоже, а на какую-то подсознательную боязнь WS — учитывая минусы SSE. Или я проглядел какие-то потенциальные плюсы?
Когда SSE не используется через HTTP / 2 , у него есть ограничение на максимальное количество открытых подключений, что может быть особенно болезненным при открытии нескольких вкладок, поскольку ограничение устанавливается на браузер и имеет очень низкое значение (6). Проблема была помечена как «Не исправить» в Chrome и Firefox . Это ограничение для браузера + домена, что означает, что вы можете открыть 6 подключений SSE на всех вкладках www.example1.comи еще 6 подключений SSE к www.example2.com(на каждый Stackoverflow ). При использовании HTTP / 2 максимальное количество одновременных HTTP-потоков согласовывается между сервером и клиентом (по умолчанию 100).
Если он вернётся, то накидаю ещё теории))