Обновление Flask SocketIO - PullRequest
       6

Обновление Flask SocketIO

0 голосов
/ 03 января 2019

У меня есть raspi, подключенный к некоторым датчикам температуры, и эти данные отправляются на веб-страницу на пи в виде строки. Я очищаю страницу и получаю данные, и я пытаюсь отправить их на js-индикаторы на моем внешнем интерфейсе, используя socketio. Я следовал руководству по основному приложению чата, которое работает. Я попытался повторить это с моей собственной функцией, но я ничего не получаю.

app.py

from flask import Flask, render_template
from flask_socketio import SocketIO, send, emit
import bs4 as bs
import ast
import urllib.request

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)


@app.route('/')
def index():
    return render_template('index.html')


@socketio.on('message')
def handle_message(msg):
    print('[server]: ' + msg)
    send(msg, broadcast=True)


@socketio.on('scrape')
def get_data(a0, a1, a2, a3):
    source = urllib.request.urlopen("http://192.168.1.8/data.php")
    soup = bs.BeautifulSoup(source, 'lxml')
    values = ast.literal_eval(soup.p.string)
    values = str(values.get('ainputs'))

    a0 = values[3:8]
    a1 = values[12:18]
    a2 = values[21:27]
    a3 = values[30:36]

    print('[inputs]: ' + a0)
    emit(a0, a1, a2, a3, broadcast=True)


if __name__ == '__main__':
    socketio.run(app)

и index.html (включая скрипт)

<html>
<head>

    <title>Chat Room</title>

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

</head>
<body>

<script type="text/javascript">
    $(document).ready(function() {

        var socket = io.connect('http://127.0.0.1:5000');

        socket.on('connect', function() {
            socket.send("User has connected!");
        });

        socket.on('message', function(msg) {
            $("#messages").append('<li>'+msg+'</li>');
            console.log('data check successful');
        });

        socket.on('scrape', function() {
            socket.emit(a0);
        });

        $('#sendButton').on('click', function() {
            socket.send($('#myMessage').val());
            $('#myMessage').val('');
        });

    });
</script>

<ul id="messages"></ul>
<input type="text" id="myMessage">
<button id="sendButton">Send</button>
</body>
</html>
...