Как загрузить локальный сайт ноутбука на другое устройство, подключенное через точку доступа WiFi? - PullRequest
0 голосов
/ 09 февраля 2020

Я хочу передать данные датчика с одного устройства (с датчиком и точкой доступа Wi-Fi. Сейчас я использую свой ноутбук) на другие устройства, подключенные через точку доступа WiFi. Для этого я хочу разместить локальный веб-сайт, прослушивающий порт 80 на сенсорном устройстве (сейчас это мой ноутбук), а затем просто открыть этот сайт на других устройствах (через точку доступа WiFi, настроенную сенсорным устройством (мой ноутбук)), но когда Я попытался сделать это, указав URL: http://192.168.1.110, получил Этот сайт недоступен http://192.168.1.110/ недоступен. unreachable Как получить доступ к веб-странице localhost на других устройствах? .

Однако (почему?) Это прекрасно работает, когда устройства подключены к WiFi роутер моего дома. вот изображение (вот как оно должно выглядеть): broadcast_demo

Это индекс файла node.js. js Я работаю:

const app = require("express")();
const http = require('http').Server(app);
const io = require('socket.io')(http);

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});

var clients = 0;
io.on('connection', function(socket) {
   clients++;
   socket.emit('newclientconnect',{ description: 'Hey, welcome!'});
   socket.broadcast.emit('newclientconnect',{ description: clients + ' clients connected!'})
   socket.on('disconnect', function () {
      clients--;
      socket.broadcast.emit('newclientconnect',{ description: clients + ' clients connected!'})
   });
});

port = 80
http.listen(port, () => {
    console.log("listening to port",port)
})

и это индекс файла html. html:

<html>
    <head>
        <title>
            broadcasting_demo
        </title>
    </head>
    <script src = "/socket.io/socket.io.js"></script>
    <script>
        var socket = io();
        socket.on('newclientconnect', (data) => {
            document.body.innerHTML = '';
            document.write(data.description);
            document.write("<h1><br>Hello world, this site works<br> on other devices<br> if you're connected to my home wifi!</h1>")
        });
    </script>
    <script></script>
    <body>
        <h1>this is a demo</h1>
    </body>
</html>

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

Когда вы используете домашний Wi-Fi, ipaddr вашего датчика равен 192.168.1.110, и, следовательно, вы можете получить к нему доступ через сеть,

, но при подключении к точке доступа датчика он будет есть какой-нибудь другой publi c ipaddr, через который он доступен, поэтому вам нужно использовать этот ip вместо

Чтобы знать, что вы можете просто использовать библиотеку узлов publi c -ip

npm install public-ip

, а затем

    const publicIp = require('public-ip');
(async () => {
    console.log(await publicIp.v4());
    //=> '46.5.21.123'
})

теперь вы сможете получить доступ к веб-сайту через точку доступа датчика по адресу http://46.5.21.123

0 голосов
/ 09 февраля 2020

На вашем устройстве IOT работает DHCP-сервер?

Если вы подключаетесь через домашнюю сеть, ваш маршрутизатор предоставляет IP-адрес для телефона / планшета / клиентского устройства. Если вы подключаетесь к устройству IOT напрямую, вам необходимо убедиться, что устройство телефона / планшета / клиента имеет IP-адрес от 192.168.1.0 su bnet.

В целях тестирования вы можете вручную установить его на телефоне / планшете / клиентском устройстве, но проще всего будет запустить DHCP-сервер на устройстве IOT.

...