Архитектура вэб-сервера с бэкэндом на пайтоне на сокетах

Дайте, пожалуйста совет по выбору архитектуры.

Пишу вэб-сервер с генератором дизайнерских QR-кодов. Как мне видится будет работать:

  1. Пользователь передаёт ссылку (которая будет закодирована в QR-коде) и картинку, на которую будет наложен QR-код, указывает взаимное расположение QR и картинки.

  2. Клиент с jQuery передаёт это всё серверу на flasksocketio

  3. Сервер с помощью бэкэнда-QR-генератора на python 3.7 создаёт QR и накладывает его на картинку.

  4. QR с картинкой возвращается клиенту, где у пользователя есть возможность внести изменения (цвет, прозрачность, положение) - будет мини-графический редактор.

  5. Дополнительно выводится ещё один QR в формате svg (круто сглаженный кривыми Безье)

При реализации столкнулся с проблемой преобразования текстовой строки *.svg на клиенте в отображаемую картинку svg в браузере. Погуглил - пишут jQuery c svg не дружат. Затупил и решил написать на форум

(вдруг существует оптимальная очевидная архитектура, которую я не вижу).

Как бы вы реализовали описанный генератор? (можете назвать фрейм-ворки, в т.ч. по мини-графическому редактору на клиенте)

Как вывести текстовую строку svg на экран используя мою архитектуру с jQuery?

$(document).ready(function()
            {
                namespace ='/flask';
                var sio=io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
                
<!--функция нужна для функционирования формы эхо-->
                 $('form#emit').submit(function(event) {
                sio.emit('my_event', {data: $('#emit_data').val()});
                return false;
                });
<!--функция выводит на экран сообщение от эхо-->
<!--вот здесь надо прикришнабаладэвить вывод svg. jQuery не работает с svg-->
                sio.on('my_response', function(msg) {
                $('#log').append('<br>' + $('<div/>').text(msg.data).html());
                });
            }
                        );
<div id="log"></div>


Ответы (0 шт):