Я работаю над совместным проектом холста в реальном времени, и в этом проекте пользователи могут создавать комнаты, а другие могут присоединяться к ним с определенным идентификатором и пропуском.мое приложение также поддерживает функцию нескольких вкладок, и я также использую fabric.js для обработки операций с холстом. Теперь я хочу сделать это приложение таким образом, чтобы, если пользователь отключился от комнаты из-за какой-то проблемы с Интернетом, после повторного подключения он мог продолжитьоттуда, где он ушел.Для этого мне нужно где-то хранить данные, я пытался сделать это с помощью mongoDB, но мои данные холста велики, например, 300 МБ или 500 МБ, и для их извлечения из mongoDB требуется слишком много времени, поэтому производительность приложения очень низкая.Все операции, такие как отмена, открытие новой вкладки и т. Д., Выполняются медленно.Итак, я хочу знать, как я должен управлять данными в этом случае.
Вот мой объект fabric.js:
"{\"version\":\"2.4.4\",\"objects\":[{\"type\":\"path\",\"version\":\"2.4.4\",\"originX\":\"left\",\"originY\":\"top\",\"left\":94,\"top\":89.17157287525382,\"width\":4,\"height\":23.83,\"fill\":null,\"stroke\":\"black\",\"strokeWidth\":2,\"strokeDashArray\":null,\"strokeLineCap\":\"round\",\"strokeDashOffset\":0,\"strokeLineJoin\":\"round\",\"strokeMiterLimit\":10,\"scaleX\":1,\"scaleY\":1,\"angle\":0,\"flipX\":false,\"flipY\":false,\"opacity\":1,\"shadow\":null,\"visible\":true,\"clipTo\":null,\"backgroundColor\":\"\",\"fillRule\":\"nonzero\",\"paintFirst\":\"fill\",\"globalCompositeOperation\":\"source-over\",\"transformMatrix\":null,\"skewX\":0,\"skewY\":0,\"path\":[[\"M\",97.998,100],[\"Q\",98,100,98.5,100],[\"Q\",99,100,99,99],[\"Q\",99,98,99,97],[\"Q\",99,96,99,95],[\"Q\",99,94,99,93],[\"Q\",99,92,99,91.5],[\"Q\",99,91,99,90.5],[\"Q\",99,90,98.5,91],[\"Q\",98,92,98,93.5],[\"Q\",98,95,98,97],[\"Q\",98,99,97.5,100.5],[\"Q\",97,102,97,104.5],[\"Q\",97,107,97,108.5],[\"Q\",97,110,96.5,111],[\"Q\",96,112,96,112.5],[\"Q\",96,113,95.5,113],[\"Q\",95,113,95,113.5],[\"L\",95,114.002]]}]}"
Это только один объект, показывающий текущее состояние, как этоу меня их много в моей БД для хранения предыдущего состояния.потому что это приложение реального времени, я хочу минимизировать задержку, поэтому мне нужен более быстрый способ.
Я использую nodeJs и socket.io.
Спасибо