Javascript 如何解决套接字不向特定通道发送消息的问题?
我想写一篇关于频道的对话。它工作得非常好,但只有在发送消息时参数“broadcast”设置为True时才能工作。只要我将@socketio.on('send message')中的“broadcast=True”更改为“room=room”,它就会停止发送消息。当我点击发送按钮时,不会发生任何事情,也不会显示任何内容。有人能指出这里有什么问题吗?我花了很多天在这上面,我会感谢所有的提示。多谢各位 服务器:Javascript 如何解决套接字不向特定通道发送消息的问题?,javascript,python,flask,websocket,flask-socketio,Javascript,Python,Flask,Websocket,Flask Socketio,我想写一篇关于频道的对话。它工作得非常好,但只有在发送消息时参数“broadcast”设置为True时才能工作。只要我将@socketio.on('send message')中的“broadcast=True”更改为“room=room”,它就会停止发送消息。当我点击发送按钮时,不会发生任何事情,也不会显示任何内容。有人能指出这里有什么问题吗?我花了很多天在这上面,我会感谢所有的提示。多谢各位 服务器: @socketio.on('join') def on_join(room): p
@socketio.on('join')
def on_join(room):
print(f"joined channel is: {room}")
username = session.get("name")
join_room(room)
data = {"username": username, "room": room}
emit('join', data)
@socketio.on('send message')
def handleMessage(data):
# get user's name and sent message
print(f"sent data is: {data}")
message = data["message"]
name = data["name"]
date = data["date"]
room = data["room"]
print(f"room is: {room}")
# save data into messages dict
messages[room].append(message)
emit("announce message", {"message": message, "name": name, "date": date},
broadcast=True)
客户端(从channels.html,用户单击链接将其重定向到特定的频道模板):
//将onclick函数设置为使用jinja2动态创建的元素
document.getElementById(“所有通道”).addEventListener(
“点击”,
事件=>{
if(event.target&&event.target.matches(“按钮”)){
警报(“每个按钮都应该工作”);
const room=event.target.innerHTML;
警报(房间);
插座。发射('连接',房间);
}
},
假的
);代码>您是否查看了服务器和客户端的日志输出,以查看消息在哪里丢失?很遗憾,您没有提供完整的应用程序,因此我无法为您调试。谢谢您的回复。我仍然不知道为什么,但自从我从emit中删除broadcast=True和room=room(“宣布消息”,“消息”:消息,“名称”:名称,“日期”:日期},broadcast=True)以来,它一直正常工作。它将消息发送到通道,但只发送不带这些参数的消息。您是否查看了服务器和客户端的日志输出以查看消息丢失的位置?很遗憾,您没有提供完整的应用程序,因此我无法为您调试。谢谢您的回复。我仍然不知道为什么,但自从我从emit中删除broadcast=True和room=room(“宣布消息”,“消息”:消息,“名称”:名称,“日期”:日期},broadcast=True)以来,它一直正常工作。它向通道发送消息,但只发送不带这些参数的消息。