Eclipse Paho Javascript Клиент и поддержка браузера - PullRequest
0 голосов
/ 25 мая 2018

Один из моих RPi настроен как веб-сервер (Apache2).На том же RPi работает брокер MQTT (Mosquitto).Веб-сайт настроен следующим образом:

root@raspberrypi:/etc/apache2/sites-available# cat 000-default.conf
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf

#--- PAUL ---

ProxyPreserveHost On

<Location /mqtt>
  ProxyPass "ws://127.0.0.1:9001"
  ProxyPassReverse "ws://127.0.0.1:9001"
</Location>

#--- PAUL ---
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
root@raspberrypi:/etc/apache2/sites-available#

А москит настроен следующим образом:

root@raspberrypi:/etc/mosquitto# cat mosquitto.conf
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883

listener 9001
protocol websockets
root@raspberrypi:/etc/mosquitto#

Я написал очень простую веб-страницу для проверки функциональности (справа на скриншоте),В MS Edge все работает нормально (внизу слева), но не работает в некоторых других браузерах (Firefox, вверху слева):

Screenshot

Я не уверен, что это проблема RPI илипроблема с браузером, но мне нужно решить эту проблему.

Кто-нибудь знает, что может вызвать эту ошибку и как я могу ее решить?

Заранее спасибо,

Пол

1 Ответ

0 голосов
/ 26 мая 2018

Ok, index.php:

<!DOCTYPE html>
<html>
    <head>
        <title>IoThings & Trains</title>
        <script src="scripts/jquery-3.3.1.js"></script>
        <script src="scripts/paho-mqtt.js"></script>
        <script src="scripts/IoTT_Web.js"></script>
        <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Expires" content="0" />
    </head>
    <body>
        Hello World !!
    </body>
</html>

IoTT_Web.js:

client = new Paho.MQTT.Client(location.hostname, Number(location.port), "IoTT_Web");

client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;

client.connect({onSuccess:onConnect});

function onConnect()
{
    console.log("onConnect");
    client.subscribe("#");
}

function onConnectionLost(responseObject)
{
    if(responseObject.errorCode !== 0)
    {
        console.log("onConnectionLost: "+responseObject.errorMessage);
    }
}

function onMessageArrived(message)
{
    console.log("onMessageArrived:\n\tFrom " + message.destinationName + "\n\tPayload " + message.payloadString);
}

Сообщения об ошибках из консоли Firefox:

SecurityError: The operation is insecure.
paho-mqtt.js:1046
LibraryFactory/PahoMQTT</ClientImpl.prototype._doConnect
http://192.168.1.100/scripts/paho-mqtt.js:1046:18
LibraryFactory/PahoMQTT</ClientImpl.prototype.connect
http://192.168.1.100/scripts/paho-mqtt.js:881:4
Client/this.connect
http://192.168.1.100/scripts/paho-mqtt.js:2004:4
<anonymous>
http://192.168.1.100/scripts/IoTT_Web.js:6:1

И, наконец,(правильный) вывод с Edge (консоли):

 HTML1300: Navigation occurred.
192.168.1.100 (1,1)

 onConnect

 onMessageArrived:
    From TBTIoT/Devices/11936008677624121892/Status
    Payload Online

 onMessageArrived:
    From IoTT/Devices/11936008677624121892/Status
    Payload Online
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...