客户端从服务器接收数据

时间:2019-12-08 18:34:54

标签: javascript node.js raspberry-pi

因此,我有一个Raspberry Pi 4,并且我试图从JSON文件接收数据并将其显示在我网站上的text元素上。抱歉,如果我完全错了,那是我第二天带着Raspberry Pi。感谢w3schools,我做了一些基本的事情,例如打开LED。我试图为自己制作一个机器人托管工具,它将在电视上显示托管量

index.html:

<!DOCTYPE html>
<html>

<head>
    <link rel="stylesheet" type="text/css" href="index.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
</head>

<body>
    <div class="container">
        <h1>Bots Hosted:</h1>
        <h2 id="bot-qty">0</h2>
    </div>
</body>

<script>
    var socket = io();
    window.addEventListener("load", function() {
        var bot_count = document.getElementById("bot-qty");
        var times_ran = 0;
        const interval = setInterval(function() {
            socket.emit("request-count", times_ran);
            times_ran++;
        }, 20000);
    })

    socket.on('request-count', function(data) {
            document.getElementById("bot-qty").innerText = data;
    })
</script>

</html>

webserver.js:

var http = require('http').createServer(handler);
var fs = require('fs');
var io = require('socket.io')(http);

http.listen(1337);

function handler(req, res) {
    fs.readFile(__dirname + '/public/index.html', function(err, data) {
        if (err) {
            res.writeHead(404, { 'Content-Type': 'text/html' });
            return res.end("404 Not Found");
        }
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.write(data);
        return res.end();
    });
}

io.sockets.on('connection', function(socket) {
    socket.on('request-count', function(data) {
        var bot_count = JSON.parse(fs.readFileSync("config.json", "utf8"));
        console.log(bot_count);
        socket.emit('request-count', bot_count);
    });
});

在控制台中,它说

GET <long_url_here> net::ERR_NAME_NOT_RESOLVER

1 个答案:

答案 0 :(得分:0)

index.html中,您通过编写来初始化新的Socket实例

var socket = io();

您没有提供任何url,因此socket.io-client将使用默认的window.location,如here所示。这可能是个问题,因此请尝试设置特定的网址,例如。 g。

var socket = io('http://localhost');

或(也指定端口)

var socket = io('http://localhost:1337');

还要尝试确保您在打开网站之前用webserver.js运行node webserver.js

另请参见GitHub上的this discussion