알려주신 소스 상으로는 알기 힘드네요.
아마도 nodejs 쪽의 sendChat 함수가 원하는대로 작동되지 않는 듯 합니다.
얼마 안 있어, 전체 소스를 "zooo.kr 상단메뉴 - 오픈소스"에서 공개할 생각입니다.
(14강 이후의 내용들이 모두 포함된 소스입니다)
미흡하나마 그때 참조 부탁드려요.
[[RE] [RE] 안녕하세요. 카카오톡 만들기 질문드립니다.의 답글] ----------------------------------------------------------------
답변 감사드립니다 ㅠ 해결된거같아요 혹시.. 다른문제가 생겼는데
14강까지 다 들었거든요 근데 채팅을 치면 여전히 새로고침해야 나오네요 어딘가 잘못된 걸까요??
아 그리고 영상이랑 다르게 전송버튼 누르면 입력창에 내용이 안지워지고 그대로 남아있습니다
콘솔로그에도 "arrive_new_message OK" 가 안찍히구요
에러내용도 없어서 어디서부터 건드려야할지 모르겠네요 ㅠ
function sendChat(room_id, send_memberCode) {
ALL_ROOM.forEach(function(element, index) {
if(element.id == room_id) { // 맞는 방 찾기
element.members.forEach(function(member, memberIdx) {
ALL_USER.forEach(function(user, userIdx) {
if(member.memberCode == user.memberCode) { // 현재 접속한 유저에 포함된다면..
let data = {"code" : "arrive_new_message", "room_id" : room_id};
user.ws.send(JSON.stringify(data));
console.log("arrive_new_message OK");
}
});
});
}
});
}
function getAllMessageFromRoom(room_id, mode){
$.ajax({
type: 'POST',
url: "getAllMessageFromRoom.php",
data: {"room_id": room_id},
dataType : 'text',
cache: false,
async: false
})
.done(function( result ) {
let chatList = {"CHAT": JSON.parse(result)};
chatList.CHAT.forEach(function(element, index){
let isMy = false;
let isYou = true;
if(element.memberCode == "<?php echo $_SESSION["kakao_member_code"]?>") {
isMy = true;
isYou = false;
}
element.chat_contents = chatList.CHAT[index].chat_contents.replace(/(?:\r\n|\r|\n)/g, '<br/>');
chatList.CHAT[index].isMy = isMy;
chatList.CHAT[index].isYou = isYou;
});
if(mode == "first"){
var output = Mustache.render($("#MAIN").html(), chatList);
$("#MAIN").html(output);
} else {
$("#BACKGROUND").load("chat.php", function() {
var output = Mustache.render($("#BACKGROUND").html(), chatList);
$("#MAIN").html(output);
$("#BACKGROUND").html("");
});
}
})
.fail(function( result, status, error) {
// 실패했을때
alert("에러 발생" + error)
});
}
websocket.onmessage = function(e){
let message = JSON.parse(e.data);
switch(message.code) {
case "send_roominfo" : // 방 생성후 받은 방 코드
NOW_ROOM_ID = message.room_id;
getAllMessageFromRoom(NOW_ROOM_ID, "first");
break;
case "arrive_new_message" : // 새 메시지 도착
NOW_ROOM_ID = message.room_id;
getAllMessageFromRoom(NOW_ROOM_ID, "notfirst");
break;
}
}
----------------------------------------------------------------