1. 지금 /chat 페이지의 모든 메세지들은 회색으로 보입니다.
내가 보낸 메세지는 우측으로 옮기거나 색을 다르게 해주거나 그런건 어떻게 해야할까요?
아마 html css 잘하면 될듯요
라고하셨는데 저는
eventSource = new EventSource('/message/' + nowChatRoomId);
eventSource.addEventListener('test', function (e) {
var data = JSON.parse(e.data);
data.forEach((item) => {
$('.chat-content').append(
`<li><span class="chat-box <strong>mine</strong>">${item.content}</span></li>`
);
});
이런식으로 강사님이 예전에 하셧던것처럼 mine 클라스명을 붙여서
.mine {
background: yellow;
color: #000;
float: right;
}
이렇게 꾸며줬는데요,
문제는 저 클래스명을 조건문을 걸고싶은데 어떻게 해줘야할지 갈피를 못잡겠습니다.
req.user._id를 서버에서 전송받아서, 채팅보낸사람의 userId와 지금 로그인한 사람의 user._id를 비교해서 일치하면 mine클래스가 붙게끔하려구하거든요
그럼 아래 코드짠곳에서 req.user._id를 클라이언트에 보내줘야하는건가요?
근데 지금 채팅방을 클릭하면 eventSource = new EventSource('/message/' + nowChatRoomId);
이 코드로인해서 아래 서버코드가 작동되는건데.. req.user._id를 또 보내주려면 어떤식으로해야하나요..?
app.get('/message/:parentid', isLogin, function (req, res) {
res.writeHead(200, {
Connection: 'keep-alive',
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
});
db.collection('message')
.find({ parent: req.params.parentid })
.toArray()
.then((result) => {
res.write('event: test\n');
res.write(`data: ${JSON.stringify(result)}\n\n`);
});
const pipeline = [{ $match: { 'fullDocument.parent': req.params.parentid } }];
const changeStream = db.collection('message').watch(pipeline);
changeStream.on('change', (result) => {
var addData = [result.fullDocument];
res.write('event: test\n');
res.write(`data: ${JSON.stringify(addData)}\n\n`);
});
});