node.js socket.io 익스 구버전에서 먹통 되는 문제..
본문
제작중인 사이트에 node.js를 이용한 채팅방을 만들고 있는데요.
구버전 익스에서 문제가 생겨서 질문을 드립니다.
익스8은 그냥 그러려니 했는데 익스 9에서까지 안되니 답답하네요
에러 메시지는 이렇게 나오더라고요
CRIPT438: 개체가 'stringify' 속성이나 메서드를 지원하지 않습니다.
?EIO=3&transport=polling&j=0&t=1412692581087-1&b64=1&sid=nlURD8Vs3W2qKLWAAAAb, 줄 1 문자 1
쫓아가보면
클라이언트쪽에서 인클루드 한 socket.io.js파일에서 아래 내용에서 멈춘것으로 나와요..
str += json.stringify(obj.data);
막 검색하다 보니까 이게 구버전에서는 계속 stackoverflow라고 떴었는데 이거랑도 연관이 있는것같고, 외국인이 쓴 어느 글에서는
delete Object.prototype.toJSON;
delete Array.prototype.toJSON;
delete Hash.prototype.toJSON;
delete String.prototype.toJSON;
이런거 넣으면 된다(?)는 식으로 얘기하던데 잘 모르겠네요....
일단 비루한 코드를 공개하자면 아래와 같이 짰습니다.. nodejs 고수님들 도와주세요 ㅜㅜ
<?php include_once("../common.php") ?>
<head>
<link rel="stylesheet" href="/css/common.css">
<script src="/js/socket.io.js"></script>
<script src="/js/jquery-1.8.3.min.js"></script>
<script>
window.onload = function () {
// 소켓을 생성합니다.
var socket = io.connect('http://123.45.67.89:52273');
socket.emit('start','<?php echo $member[mb_id]?>');
// 소켓 이벤트를 연결합니다.
socket.on('message', function (data) {
$("#chat_content").append("<li>"+data+"</li>");
//스크롤 한칸 내리기
$('#chat_content').scrollTop($('#chat_content').scrollTop()+parseInt($("li:last-child", "#chat_content").css('height').replace(/[^-\d\.]/g, '')));
});
// 문서 객체 이벤트를 연결합니다.
document.getElementById('nw_chat_enter').onclick = function () {
// 변수를 선언합니다.
var text = document.getElementById('nw_chat_input').value;
if(text != ''){
if('<?php echo $member[mb_nick]?>' =='')
alert("로그인이 필요합니다.");
else{
// 데이터를 전송합니다.
socket.emit('message', '<b>'+'<?php echo $member[mb_nick]?>'+'</b> '+text);
//텍스트 입력창을 삭제합니다.
$('#nw_chat_input').attr('value','');
}
}
};
};
</script>
</head>
<style>
</style>
<body>
<div class="nw_chat">
<div class="nw_chat_top">
</div>
<div class="nw_chat_mid">
<ul id="chat_content">
</ul>
</div>
<div class="nw_chat_bot">
<input id="nw_chat_input" class="nw_chat_input" type="text" placeholder="대화를 입력해주세요" onkeydown="if(event.keyCode==13){$('.nw_chat_enter').trigger('click');}"/>
<div id="nw_chat_enter" class="nw_chat_enter">
</div>
</div>
</div>
</body>
</html>
답변을 작성하시기 전에 로그인 해주세요.