flask-socketio 简单判定用户是否在线

flask-socketio 简单判定用户是否在线

其实呢,我这个是简化版,只跟大家说下原理,对于flask-socketio稍微了解点的都知道,不管是前端和服务端开始连接还是断开连接都可以收到消息提醒,那么我们就利用这点特性做一个简易版的用户在线判断,首先是服务端,有条件的建议使用数据库,直接更改数据库对应状态就行,这里我就只使用session和txt来实现了。
废话不多说直接上代码
flask服务端代码:

from flask import Flask, render_template, request, session
from flask_socketio import SocketIO, join_room

app = Flask(__name__)
app.config['SECRET_KEY'] = 'SECRETKEY'

socketio = SocketIO()

socketio.init_app(app)


@app.route('/')
def hello_world():  
    username = 'kge123666'   # 这里是用户名设定
    session['username'] = username   # 这里用的session进行操作
    return render_template('index.html')


@socketio.on('connect')
def connected_msg():
    username = session.get('username')
    if username:
        with open('status.txt', 'w') as f:  # 这里用的是txt文本文档,使用时还是要替换成数据库
            f.write('在线')
    print('用户已连接!')
    print("Session:" + session.get('username'))


@socketio.on('disconnect')
def disconnect_msg():
    username = session.get('username')
    if username:
        with open('status.txt', 'w') as f:  # 这里用的是txt文本文档,使用时还是要替换成数据库
            f.write('离线')
    print('用户断开连接!')
    print("Session:" + session.get('username'))


if __name__ == '__main__':
    socketio.run(app, host='0.0.0.0', port=5000, debug=True)

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户是否在线判断</title>
    <script type="text/javascript" src="//cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
    <script type="text/javascript" src="//cdn.bootcss.com/socket.io/3.1.2/socket.io.min.js"></script>
</head>
<body>
<script>
    var socket = io.connect('http://' + document.domain + ':' + location.port);

    socket.on('connect', function () {
    });
    socket.on('disconnect', function () {

    });
</script>
<h1>python学习交流群:926031776</h1>
</body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qformat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值