Flask SocketIO: отправлять сообщение клиенту при вызове в цикле - PullRequest
0 голосов
/ 09 октября 2018

Я тренирую несколько видов легкой атлетики, которые выполняют многократный спринт на человека за тренировку.У меня одновременно работают два файла: socketIO и канал данных, на котором все тренировочные результаты приходят каждые 6 секунд.

У меня работает сокетIO и мой канал данных, но часть для отправки сообщений от моего канала данных через сервер клиенту не работает.Я хотел бы отправить сообщение клиенту всякий раз, когда функция вызывается в файле datafeed.В конце концов я хотел бы представить свои данные в виде js-диаграммы на html-странице.

(Процесс 1) Это часть моего сокета, к которой я хотел бы обратитьсяотправка сообщения клиенту:

def sendMessage(timestamp, position, logOfRace):
    @socketio.on('my event', namespace='/test')
    def message():
        emit('my response', {'data': timestamp, position, logOfRace})

Это мой соответствующий js-файл:

$(document).ready(function(){
    var socket = io.connect('http://' + document.domain + ':' + location.port + '/test');
    socket.on('my response', function(msg) {
        $('#log').append('<p>Received: ' + msg.data + '</p>');
    });
    $('form#emit').submit(function(event) {
        socket.emit('my event', {data: $('#emit_data').val()});
        return false;
    });
});

(Процесс 2) Это поток данных, который собирает данные каждые 6 секунд,В конце каждого цикла я хотел бы отправить данные моему клиенту с помощью sendMessage.

from socketIO import sendMessage

#infiniteloop of data collection. Example of one 6s loop:
data = [ 
[50, 3, 0.148, 8.155, 12.177], 
[52, 1, 0.232, 7.148, 11.256], 
[56, 3, 1.121, 8.141, 12.368], 
[57, 6, 1.653, 8.650, 14.540] ]

for i in range(len(data)):
    timestamp = data[i][0]
    position = data[i][1]
    logOfRace = data[i][2:5]
    sendMessage(timestamp, position, logOfRace)

ВОПРОС: Как я могу использовать функцию sendMessage в цикле forфайл подачи данных?В конечном итоге вывод в моем браузере должен быть:

50 3 [0,148, 8.155, 12,177]

52 1 [0,232, 7,148, 11,256]

56 3[1.121, 8.141, 12.368]

57 6 [1.653, 8.65, 14.54]

, и это должно обновляться каждые 6 секунд!

Спасибо за вашу помощь!

...