我怎样才能同时为一个客户提供一个烧瓶应用程序

时间:2014-11-13 00:57:40

标签: python flask flask-socketio

我想创建一个只能由一个客户端同时编辑的webapp。 我用烧瓶和烧瓶 - socketio。 在授权客户端离开(断开socketio中的事件)之后,下一个应该能够编辑事物。现在我有多次调用websockets,http不只是一个websocket。因为我有简单的html表单,我也必须阻止传入的请求。

我可以在socketio事件中从请求对象获取IP。

connected = None

@socketio.on('disconnect', namespace='/notifications')
def disconnect():
    global connected
    connected = None
    logger.info('Client disconnected')

@socketio.on('connect', namespace='/notifications')
def notifications():
    global connected
    if not request.headers.getlist("X-Forwarded-For"):
       ip = request.remote_addr
    else:
       ip = request.headers.getlist("X-Forwarded-For")[0]
    if connected is None:
        connected = ip, request.environ["REMOTE_PORT"]
        logger.info("Client connected. %s:%s", connected[0],connected[1])
        # do stuff
    else:
        logger.info("Blocked %s:%s", ip, request.environ["REMOTE_PORT"])

对我来说这看起来很糟糕......

0 个答案:

没有答案