请原谅我,如果我张贴的方式不好,但我不知道哪里是错误。 我用烧瓶插座和插座和五个房间聊天。我把房间布置成这样:
ROOMS = ["waiting room", "food", "news", "games", "coding"]
然后我把它们放到html中:
^{pr2}$在模板上:
{%for room in rooms%}
<p class="select-room"> {{ room }}</p>
{% endfor %}
问题是当我试图只通过以下方式将信息发送到我所在的房间时:
@socketio.on('message')
def message(data):
time_stamp = time.strftime('%b-%d %I:%M%p', time.localtime())
send({'msg': data['msg'], 'username': data['username'], 'time_stamp':time_stamp}, room=data['room'])
来自客户:
document.querySelector('#send-message').onclick = () =>{
socket.send({'msg': document.querySelector('#user_message').value,
'username': username, 'room': room});
}
这让我犯了个关键错误:
send({'msg': data['msg'], 'username': data['username'], 'time_stamp':time_stamp}, room=data['room'])
KeyError: 'room'
当我试图切换房间时也会发生这种情况(离开一个房间,用这个连接另一个房间):
function leaveRoom(room) {
socket.emit('leave', {'username': username, 'room': room});
document.querySelectorAll('.select-room').forEach(p => {
p.style.color = "black";
});
}
function joinRoom(room) {
socket.emit('join', {'username' : username, 'room' : room});
// Clear message area
document.querySelector('#display-message-section').innerHTML = '';
};
对于房间选择,我使用:
document.querySelectorAll('.select-room').forEach(p => {
p.onclick = () => {
let newRoom = p.innerHTML
// Check if user already in the room
if (newRoom == room) {
msg = `You are already in ${room} room.`;
printSysMsg(msg);
} else {
leaveRoom(room);
joinRoom(newRoom);
room = newRoom;
};
};
});
我哪里出错了? 完整代码如下:
https://pastebin.com/QXiBQG2u
https://pastebin.com/zfEtV4ZX
https://pastebin.com/wfkqNjf9
目前没有回答
相关问题 更多 >
编程相关推荐