Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决套接字不向特定通道发送消息的问题?_Javascript_Python_Flask_Websocket_Flask Socketio - Fatal编程技术网

Javascript 如何解决套接字不向特定通道发送消息的问题?

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

我想写一篇关于频道的对话。它工作得非常好,但只有在发送消息时参数“broadcast”设置为True时才能工作。只要我将@socketio.on('send message')中的“broadcast=True”更改为“room=room”,它就会停止发送消息。当我点击发送按钮时,不会发生任何事情,也不会显示任何内容。有人能指出这里有什么问题吗?我花了很多天在这上面,我会感谢所有的提示。多谢各位

服务器:

@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)以来,它一直正常工作。它向通道发送消息,但只发送不带这些参数的消息。