即使建立连接后,Flask socketio也不会收到来自javascript的任何消息

时间:2019-09-06 11:34:38

标签: javascript flask flask-socketio

在烧瓶和javascript之间建立连接后,我试图从javascript获取响应。onconnect()函数正常工作,但onmessage()无法工作。

我也尝试在javascript中将广播方法与发出方法一起广播,但是它不起作用。

这是我的app.py

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

app.config['SECRET_KEY']="MY_KEY"

@app.route('/')
def login():
    return render_template('index.html')

@app.route('/home',methods=['GET','POST'])
def home():
    if(request.method=='POST'):
        data=request.form
        name=data['name']
        return render_template('message.html',name=name)
    else:
        return render_template('index.html')

@socketio.on('connect')
def onconnect():
    print("connect")

@socketio.on('message')
def onmessage(message):
    print('message')

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

这是我的JavaScript文件

const ws =io.connect(window.location.href)

ws.on('connect', function() {
  console.log("Connection estalished")
  ws.emit("adsd",broadcast=true)
});

编辑: 脚本中有一个错误。

const ws =io()

这应该用于建立连接,而不是先前的方法。

我的项目完成。 Link for the github project

1 个答案:

答案 0 :(得分:1)

首先,只有服务器可以广播,客户端只能向服务器发射。

第二,您正在发出一个名为adsd的事件,因此您需要在服务器中添加该事件的处理程序。例如:

@socketio.on('adsd')
def adsd_handler():
    print('got adsd!')