Python flask socketio服务器在heroku和Local上的运行方式不同

时间:2019-06-01 15:23:33

标签: python heroku flask socket.io

我正在使用flask SocketIO作为服务器。 当我将服务器推送到heroku时,它在计算机中运行时的运行方式有所不同。

因此,在我的hello函数中,我尝试打印出客户端的长度。 结果是1,2,然后变成0。 但是在我的本地主机中,客户端的数量将正确增加。 我猜heroku会经常重启应用程序吗?

我使用SocketIO作为客户端,并使用下面的函数向服务器发送句子。 但是在heroku上我无法得到响应。

def sendMsg():
    print('send')
    sio.emit('client msg', '我的訊息')

我还尝试使用_thread计数经过的时间,但结果始终为0。

我的服务器

from flask_socketio import SocketIO, emit

app = Flask(__name__)
socketio = SocketIO( app )

clients = {}

class client:
    def __init__(self,sid):
        self.sid = sid
        self.connected = True
    def emit(self, event, data):
        emit(event, data, room=self.sid)

@app.route( '/' )
def hello():
    # return render_template( './ChatApp.html' )
    global clients
    return str(len(clients))

def messageRecived():
    print( 'message was received!!!' )

#Add connected client
@socketio.on( 'connected' )
def client_connected():
    print ("%s connected" % (request.sid))
    global clients
    clients[request.sid]= client(request.sid)
    clients[request.sid].emit('response',        {'sid':request.sid,'connction':clients[request.sid].connected})

@socketio.on( 'client msg' )
def client_message( msg ):
    MSG = str(request.sid) + " 說: "+str(msg)
    print(MSG)
    socketio.emit('response',MSG)

if __name__ == '__main__':
    socketio.run( app, debug = True )

0 个答案:

没有答案