Периодическое изменение содержимого тела HTML во время выполнения - NodeJS

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body></body>
</html>

app.js

У меня есть простой сокет UDP и простой HTTP-сервер:

var socket = require( "dgram" ).createSocket( "udp4" );
socket.on("message", function ( message, requestInfo ) {
    document.body.innerHTML = message; // which obviously wrong
    // because the file is running on the client-side
    // I'm looking for something equivalent 
});

socket.bind(1247);

var http = require('http'), fs = require('fs');
fs.readFile('./index.html', function (err, html) {
   http.createServer(function(request, response) {
        response.writeHeader(200, {"Content-Type": "text/html"});
        response.write(html);
        response.end();
    }).listen(1247,'xx.xx.xx.xx');
});

Я успешно и периодически (каждые 5 секунд) получаю сообщения UDP с другого устройства.

Есть ли способ изменить содержимое тела HTML после первого запроса от пользователя каждый раз, когда он получает сообщение UDP?


person Mike    schedule 28.08.2017    source источник


Ответы (1)


Если вам нужна быстрая связь между сервером и клиентом, и ваша серверная обработка получает сообщения в сокете, я бы рекомендовал использовать сокет.io.

Вы можете установить соединение через веб-сокет между клиентом и сервером, и сервер может отправить сообщение всем клиентам, когда он получит сообщение. На вашем клиенте у вас будет код, аналогичный тому, что вы уже создали. Это пример фрагмента из документации socket.io.

socket.on('new message', function (data) {
    document.body.innerHTML = data;
    // do something with the new data
});

Этот ответ содержит хороший сокет .io пример.

person luxdvie    schedule 28.08.2017