Flask插座,选择房间时钥匙错误

2024-04-23 11:58:14 发布

您现在位置:Python中文网/ 问答频道 /正文

请原谅我,如果我张贴的方式不好,但我不知道哪里是错误。 我用烧瓶插座和插座和五个房间聊天。我把房间布置成这样:

    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

Tags: insendmessagedatatimestampusernamemsg