socket.io только выдает на страницу рефеш - PullRequest
0 голосов
/ 29 января 2019

Я установил простое веб-приложение, используя Flash / AngularJS и socket.io.У меня есть страница администратора, защищенная паролем и имеющая серверную часть MySQL, которая заполняет страницу настроек при успешной аутентификации.Я столкнулся с проблемой, когда при первой загрузке страницы ничего не заполняется до тех пор, пока я не обновлю страницу браузера.

Из моего app.py:

@app.route('/admin')
def admin():
"""
Called when we successfully navigate to the administrative settings page
:return: Flask.render_template, corresponding either to login.html or admin.html (depending on if credentials
were valid)
"""

global default_settings

my_logger.info('============= PAGE LOADED: settings')

# Refreshes default settings to make sure it is up to date with DB
default_settings = db_get_saved()

# If we have been logged out by the scan page, forces user to re-enter credentials
if not session.get('logged_in') and default_settings['user_pw'] != '':
    return render('login.html', request.path)


    # Otherwise renders the admin.html page
else:
    return render('admin.html', request.path)


def render(template, path):
"""
Called by our Flask app when a new page is loaded. Renders corresponding HTML document
:param template: string, name of the HTML document to be rendered
:param path: string, path of this document
:param logo_menu: company logo to be displayed on front page in the menu bar
:param logo_footer: company logo to be displayed on front page in footer
:return: Flask.render_template, corresponds to the passed in parameters
"""

my_logger.info('Rendering page: ' + template)

logo = ''

if default_settings["company_logo"] != '':
    logo = '/static/uploads/' + default_settings["company_logo"]

return render_template(template, app_name='My App', menu=create_menu(path), user_js='admin',
                       logo=logo)

Однажды страницарендеринг, форма должна быть заполнена с помощью функции в app.py, которая называется fe_get_settings, которая вызывается из angular_controller.js:

// ----------------------- Socket Event Handlers

socket.on('connect', function() {
    /*
    Listens for initial connect message from the socketio server. When connection occurs, requests default settings
    from the DB
     */

    socket.emit('fe_get_settings');

});

Опять все работает, но только после того, как я загружаю страницу администратора и затем обновляюЭто.Любое понимание этого будет с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...