Я создал сервер node.js и веб-сайт с экспрессом.Сайт в основном показывает множество связанных фотографий, таких как фотографии, сделанные в 2017 году. Сервер работает на Raspberry pi с подключенным к нему внешним жестким диском, с которого сервер принимает изображения.Когда пользователь получает доступ к сайту, клиент отправляет запрос инициализации на сервер через веб-сокеты, чтобы начать отправку изображений.Затем сервер отправляет X-изображения также через веб-сокеты, и пользователь может запросить больше с другим запросом инициации.Как я могу сделать это более эффективным?Есть ли более быстрый способ, чем веб-сокеты?
Несколько замечаний
- Я знаю, что Pi по своей сути медленный и что жесткий диск является узким местом.Тем не менее, я хочу оптимизировать передачу данных.
- Я уже рассмотрел переполнение стека в другом вопросе и рекомендовал удалить метаданные, которые я сделал.
Код на стороне сервера:
con.on("message", function incoming(message) {
let msgArr = message.split(", ");
let prefix = 'a';
let year = '2008';
if (msgArr[0].includes('2008')) {prefix = 'a'; year = '2008'}
if (msgArr[0].includes('2009')) {prefix = 'b'; year = '2009'}
if (msgArr[0].includes('2010')) {prefix = 'c'; year = '2010'}
if (msgArr[0].includes('2011')) {prefix = 'd'; year = '2011'}
if (msgArr[0].includes('2012')) {prefix = 'e'; year = '2012'}
if (msgArr[0].includes('2013')) {prefix = 'f'; year = '2013'}
if (msgArr[0].includes('2014')) {prefix = 'g'; year = '2014'}
if (msgArr[0].includes('2015')) {prefix = 'h'; year = '2015'; msgArr[1]++;}
if (msgArr[0].includes('2016')) {prefix = 'i'; year = '2016'; }
if (msgArr[0].includes('2018')) {prefix = 'j'; year = '2018';}
let path = "/Volumes/Seagate\ Drive/" + year + "/" + prefix + msgArr[1] + ".jpg";
fs.readFile(path, function (err, data) {
if (err) {con.send("error")}
else {
con.send(data.toString('base64'));
console.log("image sent");
}
Клиентская сторона просто получает изображение, помещает его на сайт и затем отправляет запрос еще одного изображения, пока оно не достигнет Xизображения.