美文网首页Django+小程序
django中实时获取当前在线人数

django中实时获取当前在线人数

作者: ___大鱼___ | 来源:发表于2018-12-15 18:06 被阅读165次

    settings.py

    # 设置session过期时间
    SESSION_COOKIE_AGE = 60 * 30  # 30分钟
    

    views.py

        def get_all_login_user():
            SQL = """
                  SELECT  * FROM `django_session` WHERE expire_date >= NOW() GROUP BY session_data; 
                  """
            # 根据session值是否重复判断用户是否在线  不太完善
            sessions = Session.objects.filter(expire_date__gte=datetime.now())
            user_list = []
            # 获取session中的用户id
            for session in sessions:
                data = session.get_decoded()
                print(data)
                user_list.append(data.get('_auth_user_id', None))
            print(user_list, 66666666)
            return user_list
    

    user/views.py

    @accept_websocket
    def get_user_list(request):
        if request.is_websocket():
            message = request.websocket.wait()
            while True:
                if message:
                    user_list = BllUser().get_all_login_user()
                    request.websocket.send(str(len(user_list)))
                    time.sleep(10)
    

    index.html

    <div class="col-md-offset-1" style="display: inline-block;line-height: 48px;color:orange">
            当前在线人数: <span id="online_number">0</span>
        </div>
    

    js

        // 实时获取当前在线用户人数
        var socket = new WebSocket("ws:" + window.location.host + "/user/get_user_list/");
                socket.onopen = function () {
                    console.log('WebSocket open');//成功连接上Websocket
                    socket.send('adasdasda。。。。');//发送数据到服务端
                };
                socket.onmessage = function (e) {
                    $('#online_number').text(e.data)
                };
                socket.onclose=function(e){
                  console.log(e);
                  socket.close(); //关闭TCP连接
                };
                if (socket.readyState == WebSocket.OPEN) socket.onopen();
    

    相关文章

      网友评论

        本文标题:django中实时获取当前在线人数

        本文链接:https://www.haomeiwen.com/subject/cwiahqtx.html