即使在建立连接后,Flask socketio 也没有收到来自 javascript 的任何消息
Flask socketio not receiving any message from javascript even after the connection is established
在 flask 和 javascript.The onconnect() 函数正常工作但 onmessage() 之间建立连接后,我试图从 javascript 获得响应。
我也尝试在 javascript 中使用广播和 emit 方法,但它不起作用。
这是我的 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)
});
编辑:
javscript 中有错误。
const ws =io()
这应该用于建立连接,而不是以前的方法。
我的项目完成了。
Link for the github project
首先,只有服务端可以广播,客户端只能向服务端发送。
其次,您正在发出一个名为 adsd
的事件,因此您需要在服务器中为该事件添加一个处理程序。例如:
@socketio.on('adsd')
def adsd_handler():
print('got adsd!')
在 flask 和 javascript.The onconnect() 函数正常工作但 onmessage() 之间建立连接后,我试图从 javascript 获得响应。
我也尝试在 javascript 中使用广播和 emit 方法,但它不起作用。
这是我的 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)
});
编辑: javscript 中有错误。
const ws =io()
这应该用于建立连接,而不是以前的方法。
我的项目完成了。 Link for the github project
首先,只有服务端可以广播,客户端只能向服务端发送。
其次,您正在发出一个名为 adsd
的事件,因此您需要在服务器中为该事件添加一个处理程序。例如:
@socketio.on('adsd')
def adsd_handler():
print('got adsd!')