FILOTチャットアプリ-3の作成(Chatting)



Chatting


リアルタイムチャットのためにioを利用しました.
  const io = SocketIO(server, {
        cors: {
            origin: "*",
        },
        allowEIO3: true,
        requestCert: true,
        secure: true,
        rejectUnauthorized: false,
        transports: ["websocket"],
    });
  • フロントとバックグラウンドのurlが異なるようにオプションを追加します.
  • const chat = io.of("/");
  • チャットネーミングスペースを使用してチャットを実現しようとしたが、生成された部屋に入ると、情報をロードする際に障害が失われたためネーミングスペースが取り除かれた.情報ロード部分で説明します.
  • メッセージBDを保存

      socket.on("message", (messageInfo) => {
                createChat(messageInfo);
                const {roomNum} = socket;
                socket.to(roomNum).emit("message", messageInfo);
    });
    const {roomNum} = socket;
    初期プレイヤーが部屋に入るとフロントがコンセントオブジェクトに部屋番号を入れるのでsocketを選択します.roomnumが使用できます.
    const createChats = async (data) => {
        const objData = JSON.parse(data);
        const {user, message, roomNum} = objData;
        
        const room = await ChatsRoom.findOne({roomNum});
    
        const dbChat = await Chat.create({
            chatRoom: room._id,
            message,
            user,
        });
    
        room.chats.push(dbChat._id);
        room.save();
    };
    これは極めて簡単な猫王論理です.