vessels
@vessels
Ни черта не понял, но очень интересно!

В чём тут проблема?

Начал использовать long polling в своём приложении, в общем то вот код:
<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script src="{{ url_for("static", filename="poll.js") }}"></script>
  </head>
  <body>
    <h1>Файл</h1>
    <p id="date"></p>
    <pre id="content"></pre>
  </body>
</html>

function update() {
    $.ajax({
        url: '/data-update',
        success:  function(data) {
            $('#date').text(data.date);
            $('#content').text(data.content);
            update();
        },
        timeout: 50000
    });
}

function load() {
    $.ajax({
        url: '/data',
        success: function(data) {
            $('#content').text(data.content);
            update();
        }
    });
}

$(document).ready(function() {
    load();
});

from flask import Flask
from flask import render_template

import os
import time
from datetime import datetime


app = Flask(__name__)


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


@app.route('/data-update', methods=['GET'])
def update():
    request_time = time.time()
    while not os.stat('data.txt').st_mtime > request_time:
        time.sleep(0.5)
    content = ''
    with open('data.txt') as data:
        content = data.read()
    return {'content': content,
            'date': datetime.now().strftime('%Y/%m/%d %H:%M:%S')}


@app.route('/data', methods=['GET'])
def get():
    content = ''
    with open('data.txt') as data:
        content = data.read()
    return {'content': content}


if __name__ == '__main__':
    app.run(port=5000, debug=True, threaded=True)

data.txt
Привет!
И так, суть этого кода в том что если в файле data.txt происходят изменения то клиент получает об этом инфу, в свою очередь клиент спрашивает у сервера
Изменения в data.txt
Привет!
Как дела?

Клиент: Есть чёт новое?
...
...
...
...
...
Сервер: Да! Держи - {'date':'2020/04/17 00:57:53', 'content':'Привет! Как дела?'}

Проблема заключается в том что код работает, но первое время, через несколько минут клиент просто перестаёт спрашивать у сервера чё да как.
Можете пожалуйста подсказать в чём тут проблема?
Буду очень рад вашим ответам!:)
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
rasschitai
@rasschitai
Калькуляторы онлайн
было бы неплохо обработать ошибки $.ajax , через метод error возможно у вас там, что то происходит и вы не видите (не вызываете после этого функцию update)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы