티스토리 뷰

개발서버에서는 이상이 없는데

원격서버에서 socket.on('some event', function(data){ });
클라이언트에서 전송된 message data가 object type이 아닌 string 형식 등으로
받아지는 문제가 발생했다.

문제를 일으키는것은 PrototypeJS 이었다.

PrototypeJS v1.6.x 가 JSON.parse, JSON.stringify Overrides 하여
socket.io 의 JSON 관련 모든 기능 깨먹는 문제가 발생하는 것.

아래와 같은 코드를 사용하면 해결됨.

if(window.Prototype) {
    delete Object.prototype.toJSON;
    delete Array.prototype.toJSON;
    delete Hash.prototype.toJSON;
    delete String.prototype.toJSON;
}

출처 : http://stackoverflow.com/a/21315324

교훈 : PrototypeJS와 NodeJS는 되도록 함께 쓰지 말자!

댓글