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>
답변 1개
답변을 작성하려면 로그인이 필요합니다.