Соединение Flask и socketio
У меня имеется веб приложение для получения и отправки информации с авторизацией flask_login и передачей данных через socketio. нужно, чтобы после перехода пользвателя на вкладку /profile, сервер отправлял и получал данные через socketio. у меня не получается корректно настроить их взаимодействие. Если будет вам будет не сложно, прошу подсказать как желаемое осуществить грамотно.
файл init.py
sio=SocketIO()
def create_app():
app = Flask(__name__)
sio.init_app(app)
app.config['SECRET_KEY'] = 'secret-key-goes-here'
login_manager = LoginManager(app)
login_manager.init_app(app)
@login_manager.user_loader
def load_user(userid):
if userid == 'true':
return user
else:
return None
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint)
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
from .cms import cms as cms_blueprint
app.register_blueprint(cms_blueprint)
return app
cms.py
from .__init__ import sio
cms = Blueprint('cms', __name__,static_folder='static')
@cms.route('/profile')
@login_required
def profile():
tempJSON ="1"
jsonIn="1"
@sio.event
def connect(sid, environ):
print(sid, 'connected')
@sio.event
def disconnect(sid):
print(sid, 'disconnected')
@sio.event
def respJSON(sid, data):
jsonIn=subprocess.check_output(['/var/www/html/socket/pj/proj/commLobby.py'],
universal_newlines=True)
sio.emit('jsonInput', {'res': jsonIn}, to=sid)
@sio.event
def addUser(data,sid):
print('************************** Users will be added')
array=sid['par'].split('|')
for i in range(len(array)):
subprocess.Popen(['/var/www/html/socket/deactivated.py', array[i]])
sleep(0.222)
print("OUT")
@sio.event
def delUser(data,sid):
print('************************** Users will be deleted')
array=sid['par'].split('|')
for i in range(len(array)):
delUser = subprocess.Popen(['/var/www/html/socket/delete.py', array[i]])
sleep(0.222)
return render_template('profile.html')
index.js Запросы организованы в бесконечном '''setInterval'''
const sio =io.connect('http://example/profile')
sio.emit('respJSON',{par: 'give me my JSON'})
sio.on('connect', () => {
console.log('connected')
})
sio.on('disconnect', () => {
console.log('disconnected')
})
sio.on('jsonInput', (data) => {
jsonStr =data['res']
jsonStr = jsonStr.replace(/'/g, '"')
})
Заранее благодарен.