- 발생현상
- server의 socket.io와 client의 socket이 정상적으로 연결되지 않음. 즉 Connection 이벤트가 발생하지 않음.
- client /socket.io/socket.io.js 는 정상적으로 보여짐
- server, client 모두 오류 메시지 없음.
<app.js> 내 소켓 설정 로직
// 소켓 서버 실행
var io = require('socket.io').listen(httpServer);
io.sockets.on('connetion', function(socket) {
console.log('socket connected!!!');
socket.on('reserve', function (data) {
console.log('reserve event on');
seats[data.y][data.x] = 2;
io.sockets.emit('reserve', data);
});
});
|
<client 로직>
var socket = io.connect();
console.log(socket);
// 이벤트 연결
socket.on('reserve', function(data) {
var $target = $('div[data-x = ' + data.x + '][data-y = ' + data.y + ']');
$target.removeClass('enable');
$target.addClass('disable');
});
|
<clinet 접속시 서버 terminal 로그>
=> socket connected 메시지가 없음, 오류 없음
baesunghan:~/Documents/workspace/nodejs/reserveMovies$supervisor app.js
Running node-supervisor with program 'app.js' --watch '.' --extensions 'node,js' --exec 'node' Starting child process with 'node app.js' Watching directory '/Users/baesunghan/Documents/workspace/nodejs/reserveMovies' for changes. Express server listening port 3000 GET / 304 230.873 ms - - |
- 발생원인
어이 없게도 'connection'이벤트에 대한 오타였음.
// 소켓 서버 실행
var io = require('socket.io').listen(httpServer);
io.sockets.on('connetion', function(socket) {
- 해결방법
오타를 수정
// 소켓 서버 실행
var io = require('socket.io').listen(httpServer);
io.sockets.on('connection', function(socket) {
console.log('socket connected!!!');
socket.on('reserve', function (data) {
console.log('reserve event on');
seats[data.y][data.x] = 2;
io.sockets.emit('reserve', data);
});
});
|
테스트시 정상적으로 socket.io 에 대한 connection 이 정상 출력됨
Watching directory '/Users/baesunghan/Documents/workspace/nodejs/reserveMovies' for changes.
Express server listening port 3000 GET / 304 200.241 ms - - GET / 200 12.503 ms - 356 GET /stylesheets/style.css 304 5.470 ms - - GET /javascripts/seats.js 200 4.317 ms - 1650
socket connected!!!
|
=> 이벤트에 대한 코딩 오타가 있는지 모르고 반나절을 해맸음.
=> 오타에 대해서 오류 메시지가 출력될 것이라고 선급하게 생각한 실수임.
=> javascript 이므로 로직이 정상동작 하지 않으면 다시 한번 오타 여부 확인이 필요함.
이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. |
댓글 없음:
댓글 쓰기