index.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import json
  4. import os
  5. from datetime import timedelta
  6. from flask import Flask,request,make_response,jsonify,render_template,session,redirect,url_for
  7. from functools import wraps
  8. import src.utils.Utils as Utils
  9. import base64
  10. from flask_socketio import SocketIO, emit
  11. app = Flask(__name__)
  12. app.config['SECRET_KEY'] = os.urandom(24)
  13. app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=1) # 设置session的保存时间。
  14. socketio = SocketIO(app)
  15. def checkLogin(f):
  16. @wraps(f)
  17. def fn(*args, **kwargs):
  18. if session.get('account') == None:
  19. return redirect('/login')
  20. return f(*args, **kwargs)
  21. return fn
  22. @app.route('/')
  23. @checkLogin
  24. def index():
  25. return render_template('index.html',account=session['account'])
  26. @app.route('/login', methods=['get', 'post'])
  27. def login():
  28. if request.method == 'GET':
  29. return render_template('login.html')
  30. else:
  31. session['account'] = request.form.get('account')
  32. return redirect('/')
  33. @socketio.on('connect', namespace='/chat')
  34. def connect():
  35. emit('connected', {'account': session['account']}, broadcast=True)
  36. @socketio.on('message', namespace='/chat')
  37. def message(data):
  38. data['account'] = session['account']
  39. emit('message', data, broadcast=True)
  40. @socketio.on('disconnect', namespace='/chat')
  41. def disconnect():
  42. print('disconnect ')
  43. socketio.run(app,debug=True,host='0.0.0.0',port=5000)