Веб-сервер, общающийся на 1: N, имеет проблемы со скоростью - PullRequest
0 голосов
/ 11 ноября 2019

Моя текущая система выглядит следующим образом:

Там есть 1 ~ 4 андроида в паре с каждым MCU через Bluetooth (HC-06). они Android-приемники. и еще один андроид просто ждет их. он «отправитель» Android. между этими Receiver & Sender находится сервер, созданный Node js, использующий socket.io

Когда каждый MCU что-то делал, устройство MCU выдает сообщение «ok» Android-получателю по Bluetooth. Эти приемники Android передают (загружают) сообщение «ОК» на сервер. Когда сервер получает «ОК», равный количеству получателей, сервер, наконец, передает «ОК». (Например, если существует 2 получателя, то сервер должен получить 2 «хорошо» для передачи «хорошо» отправителю Android). Отправитель должен получить «ОК» с сервера, чтобы перейти к следующему шагу.

Моя проблема в том, что при использовании только одного приемника Android и прохождении «ОК» проблема «Времени не возникает». *, но при использовании более 2 получателей, существует большая задержка для отправки «ОК» отправителю * первое «ОК» сообщение быстро отправляется на сервер, но другое «ОК» сообщение всегда отправляется с большой задержкой,Сравнение одного получателя. Связь.

Так что, пожалуйста, посмотрите мой код и дайте какое-нибудь возможное решение. Спасибо за чтение.


Это на стороне сервера. «ytok» - это сообщение «ok» в моем описании.

Когда Android получает «ytok» от MCU (Bluetooth), Android отправляет «send_ytok» с помощью

if(btMessage.equals("YTOK")
socket.emit("send_ytok"); //this is Android side

и после,Сервер воспроизводит эти коды. Каждая операция 'send_ytok' заставляет сервер 'ytok' + = 1, когда 'ytok' == номер получателя, отправлять 'ytok' отправителю.

    socket.on('send_ytok',function(){

             console.log("send ytok ! ");

              ytok+=1;
              console.log("got ytok" + ytok + " from " + socket.id);

                if(ytok == receiverNum){ //If server get ytok as receiver channel number

                let  message = {"messagecontent":'YTOK'};
                  io.to(senderId).emit('message', message);
                //send YTOK to sender

                }

Когда получатель равен единице, получая ytok == 1очень быстрый (менее 1 секунды), но более 2 получателей, получая ytok 2, ytok 3 ... несколько задерживается на довольно длительное время (5 ~ 10 секунд)

Если у вас есть небольшое решение для этой задержкипроблема, пожалуйста, ответьте мне. Конечно, эта проблема может возникнуть на стороне MCU, но я должен подумать и об этой стороне, поэтому я задаю эту проблему здесь. спасибо.

...