Javascript socket.emit()与flask中定义的事件不起作用
我有这个Javascript代码片段Javascript socket.emit()与flask中定义的事件不起作用,javascript,flask,websocket,socket.io,flask-socketio,Javascript,Flask,Websocket,Socket.io,Flask Socketio,我有这个Javascript代码片段 document.addEventListener('click', event => { const element = event.target; if (element.className === 'list'){ channel = element.getAttribute('data-channel'); docum
document.addEventListener('click', event => {
const element = event.target;
if (element.className === 'list'){
channel = element.getAttribute('data-channel');
document.querySelector('#chatarea').innerHTML = "";
socket.emit('loadmessage', {'channel': channel});
localStorage.setItem('channel', channel);
}
if (element.className === 'sendmessage'){
const channel = "sports";
const name = document.querySelector('#displayname').data("displayname");
const msg = document.querySelector('[name="message"]').value;
const time = timeStamp();
socket.emit('newmessage', {'channel': channel, 'name': name, 'msg': msg, 'time': time});
}
});
这是烧瓶部分
@socketio.on('loadmessage')
def loadmessage(data):
print(f"loading the existing messages of {data}")
channel = data["channel"]
m = channels[channel]
print(f"m is {m}")
emit('message loader', m, broadcast=False)
@socketio.on('newmessage')
def updatemessage(data):
print("initialised")
channels[channel][name][0] = data["msg"]
channels[channel][name][1] = data["time"]
print(f" this is the update channel info : {channels}")
m = channels[channel]
print(f"m is : {m}")
emit('message loader', m, broadcast=True)
现在的问题是,当我单击类名为
sendmessage
的按钮时,然后单击socket.emit('newmessage',{'channel':channel,'name','msg':msg,'time':time})代码>不起作用,因为我看不到任何打印语句在终端上显示我指定的烧瓶中@socket.on(sendmessage)
部分的输出。另一方面,loadmessage工作正常。我不能正确地理解它,因为我是套接字新手。您的代码检查classname=='list'
。这可能是问题所在吗?@Miguel我也试着把事情分开,但运气不好。“new message”的socket.emit()未链接到flask,否则我将在终端中有一个输出,作为我为调试设置的打印语句。嘿,我检查了它,发现这行const name=document.querySelector('#displayname').data(“displayname”)有一些问题代码>现在它工作得很好。感谢您将我的注意力吸引到Javascript上,因为我相信它一定是造成@Miguel问题的socket.emit()
部分