Dew*_*rld 2 user-management flask flask-login
我正在构建一个直播应用程序。如果他/她在线,用户可以呼叫其他用户。我可以在用户登录时注册日志。不过,我正在寻找一种方法来检查用户是否退出/退出应用程序。欢迎任何建议。
您可以使用Flask-SocketIO轻松监控这一点。使用它的优点是您可以实时监控。以下内容将会有所帮助:
项目目录
Project
|
|-> templates
| |
| |-> home.html
| |-> login.html
| |-> logout.html
|
|-> app.py
Run Code Online (Sandbox Code Playgroud)
应用程序.py
Project
|
|-> templates
| |
| |-> home.html
| |-> login.html
| |-> logout.html
|
|-> app.py
Run Code Online (Sandbox Code Playgroud)
首页.html
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'SecretKey@123'
socket = SocketIO(app)
@app.route('/')
def index():
return render_template('home.html')
@app.route('/login/<username>')
def login(username):
'''
When the user logs in.
'''
return render_template('login.html', username=username)
@app.route('/logout/<username>')
def logout(username):
'''
When the user logs out.
'''
return render_template('logout.html', username=username)
@socket.on('online')
def online(data):
emit('status_change', {'username': data['username'], 'status': 'online'}, broadcast=True)
@socket.on('offline')
def online(data):
emit('status_change', {'username': data['username'], 'status': 'offline'}, broadcast=True)
if __name__ == '__main__':
socket.run(app)
Run Code Online (Sandbox Code Playgroud)
登录.html
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
var socket = io();
socket.on('status_change', function(data) {
console.log('Status changed: ', data)
});
</script>
Run Code Online (Sandbox Code Playgroud)
注销.html
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
var socket = io();
socket.emit('online', {'username': '{{username}}' });
</script>
Run Code Online (Sandbox Code Playgroud)
现在,使用上面的代码,您可以在两个选项卡中打开链接http://localhost:5000,在第一个选项卡中,如果您点击链接http://localhost:5000/login/A,则在第二个选项卡的控制台中你会看见,Status changed: {username: "A", status: "online"}。现在,在第一个选项卡中,如果您点击链接http://localhost:5000/logout/A,那么您将在第二个选项卡的控制台中看到Status changed: {username: "A", status: "offline"}。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
4541 次 |
| 最近记录: |