Начал использовать 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':'Привет! Как дела?'}
Проблема заключается в том что код работает, но первое время, через несколько минут клиент просто перестаёт спрашивать у сервера чё да как.
Можете пожалуйста подсказать в чём тут проблема?
Буду очень рад вашим ответам!:)