PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2016/12/06 20:50:27
Name Patrick Jane
Subject [질문] node.js 질문입니다!
node.js를 이용해서 피시방 또는 가게안의 자리를 볼 수 있는 웹페이지를 만들고있습니다.

우선 블럭들을 자리모양으로 만들어서 클릭을하면 색이 바뀌도록 만들었습니다.

제가 node.js를 처음해봐서 http://blog.naver.com/PostView.nhn?blogId=hyoun1202&logNo=220671500986

여기있는 영화예매 만들어보기를 기준으로 만들었습니다. 여기서  socket 쓰는 부분만 json으로 post하도록 바꾸었습니다.

근데, 제가 만든 사이트에서는 누르면 바로바로 색이 바뀌는것이아니라 누르고 새로고침을 해줘야지만 색이바뀝니다.

해당 프로그램을 똑같이만든 다른사람들의 시연영상을보면 누르는 즉시 바뀌는거 같은데, 제꺼는 왜 안바뀌는지 계속 해봐도 잘안됩니다...


우선 index.js는
----------------------------------------------------
var express = require('express');
var router = express.Router();

global.seats = [       // 0 빈 공간, 1 예약가능 좌석, 2 예약이 완료된 좌석
    [1, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3],
    [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
    [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
]
;


/* GET home page. */
router.get('/', function(req, res, next) {
  console.log(global.seats);
  res.render('index');
});

router.use('/reserve', function(req, res){
  var x = req.body.x;
  var y = req.body.y;
  global.seats[y][x] = 2;
  console.log(global.seats);
  res.end();
}) ;
router.use('/release',function(req, res){
  var x = req.body.x;
  var y = req.body.y;
  global.seats[y][x] = 1;
  res.end();
});
module.exports = router;
-------------------------------------------------
seats.js
var express = require('express');
var router = express.Router();


/* GET users listing. */
router.get('/', function(req, res, next) {
  //요청
    //req  --> x, y
    // seat[x,y] = 2;
  res.send(global.seats);
});

module.exports = router;
----------------------------------------------------
controller.jade
script.
        var onClickSeat = function () {
            var x = $(this).attr('data-x');
            var y = $(this).attr('data-y');

            $.ajaxSettings.traditional = true;
            $.ajax({
                type: 'POST',
                url: '/reserve',
                data: {x: x, y: y},
                success: function (data) {

                }
            })
        };
        var onClickRelease = function () {
            var x = $(this).attr('data-x');
            var y = $(this).attr('data-y');

            $.ajaxSettings.traditional = true;
            $.ajax({
                type: 'POST',
                url: '/release',
                data: {x: x, y: y},
                success: function(data){
                }
            })

        };

        $.getJSON('/seats', {dummy: new Date().getTime()}, function (data) {
            $.each(data, function (indexY, line) {
                var $line = $('
').addClass('line');
                $.each(line, function (indexX, seat) {
                    var $output = $('
', {
                        'class': 'seat',
                        'data-x': indexX,
                        'data-y': indexY
                    }).appendTo($line);

                    if (seat == 1) {
                        //좌석이 비어있으면 enable 클래스와 click 리스너를 추가합니다.
                        $output.addClass('enable').on('click', onClickSeat);
                    } else if (seat == 2) {
                        //좌석이 사용 불가능 하면 disable클래스를 추가합니다.
                        $output.addClass('disable').on('click', onClickRelease);
                    }
                    else if (seat == 3) {
                        $output.addClass('counter');
                    }
                });
                $line.appendTo('body');
            });
        });

 우선 이렇게 만들었습니다. 파일이 필요하신분은 쪽지주시면 개인적으로 보내드리도록 하겠습니다....

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
16/12/06 21:25
수정 아이콘
nodejs는 안해봤지만 onClickSeat, onClickRelease 에서 success:function 안에 $(this).removeClass("disable"); $(this).addClass("enable"); 이런식으로 넣어줘야 UI 바뀌는게 작동을 할거같아요.
Patrick Jane
16/12/06 21:30
수정 아이콘
우선은 그런방식으로 고쳐봤는데요 이게 다른컴퓨터에서도 실시간으로 바뀌는게 보이려면 어떻게해야하나요ㅠㅠ
16/12/06 21:33
수정 아이콘
그거는 setInterval 같은걸로 몇초 간격으로 주기적으로 $.getJSON('/seats', ... 이걸 실행시켜서 내용을 바꿔주는 식으로 하면 되지 않을까 싶습니다.
Patrick Jane
16/12/06 21:45
수정 아이콘
답변 감사드립니다~
칸나바롱
16/12/07 12:26
수정 아이콘
실시간으로 바뀌는걸 하고 싶으시면 socket io나 pusher 같은 서비스를 알아보세요
Patrick Jane
16/12/07 16:00
수정 아이콘
처음에는 ajax로 보내는 부분을 본문에있는 링크처럼 socket io로 했다가 안돼서 ajax로 한건데 pusher한번 알아봐야겠네요 답변 감사합니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
96201 [질문] 모바일 보안인증서 문제 [2] To3237 17/01/09 3237
96200 [질문] 국조특위 김성태 위원장 평가? [13] Jannaphile4304 17/01/09 4304
96199 [질문] 한국에 수상가옥? [16] 9584 17/01/09 9584
96198 [질문] 신용카드 발급받으려고합니다. [6] EAYA3708 17/01/09 3708
96197 [질문] 남자 셋이 놀러갈만한 국내 여행지 어디 있을까요? [11] Vicenzi7494 17/01/09 7494
96196 [질문] 마우스를 사려고 하는데 질문드립니다. 토구백2888 17/01/09 2888
96195 [질문] 평일 오후에 이구간(서울) 막힐까요? [5] ISUN2791 17/01/09 2791
96194 [질문] 남자 안검하수 병원 추천부탁드립니다. [4] Jarvis3393 17/01/09 3393
96193 [질문] 가볍게 할만한 핸드폰 게임 추천 부탁드립니다 [6] 지하생활자3248 17/01/09 3248
96192 [질문] 드라마 보고싶은데 추천 부탁드립니다. [11] 삭제됨2490 17/01/09 2490
96191 [질문] 건강검진결과 이상지질혈증이 의심된다는데... [8] fRtJ5011 17/01/09 5011
96190 [질문] 페덱스나 EMS를 통한 황당한(?) 해외배송 질문입니다. [5] 엑셀시오르3450 17/01/09 3450
96189 [질문] 배우 김고은의 행보에 대해서? [38] 삭제됨6270 17/01/09 6270
96188 [질문] 사회생활 하면서 스마트폰 안쓰시는 분들 계신가요? [11] 꾸꾸3549 17/01/09 3549
96187 [질문] 요즘싱글겜할때 금수저삶느끼고싶어 못된습관이 들었는데 고쳐야할까요? [17] 선동가3981 17/01/09 3981
96186 [질문] [조조전] 아이템 사용불가 효과 [7] Paul Pogba2770 17/01/09 2770
96185 [질문] 한우 선물세트 어디에서 사는게 좋을까요? [2] 제로스3353 17/01/09 3353
96184 [질문] 중소기업 전산실에서 이직 준비에 대한 조언 부탁 드립니다. [8] MayLee5129 17/01/09 5129
96183 [질문] 골든 레트리버 필요운동량이 얼마나 되나요? [13] 김티모3321 17/01/09 3321
96182 [질문] 컴퓨터 복구.. 급합니다.. [8] 삭제됨2831 17/01/09 2831
96181 [질문] 컴퓨터 하드드라이브를 복원하려고 합니다. [4] 신전부수기3164 17/01/09 3164
96180 [질문] 가성비 블루투스 이어폰 추천해주세요. [5] 누명8637 17/01/09 8637
96179 [질문] 콜오브듀티에 관한 질문입니다. [14] MagicMan3307 17/01/09 3307
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로