상세 컨텐츠

본문 제목

노드js_그누보드와 연동_03

PHP(Class)

by 김일국 2017. 7. 23. 17:36

본문

오늘은 그누보드와 연동하기 마무리 입니다. 노드JS와 일반 호스팅의 홈페이지와 데이터 전송에 대해서 기본기술을 알수 있게 됩니다.

그누보드 게시판의 댓글의 입력/수정/삭제가 실시간으로 이루어 집니다.

사용환경:

웹호스팅: 닷홈 무료호스팅계정

웹페이지: 그누보드5(GNU버전)게시판(basic스킨사용)

노드js: 구름 노드js 무료계정

확인URL:

http://timespace7.dothome.co.kr/gnu5/bbs/board.php?bo_table=nodecomment&wr_id=1

확인화면: IE, 크롬, 스마트폰 3가지를 켜놓은 상태에서 1곳에서 댓글을 달거나, 수정, 삭제하면, 모든 화면에 실시간 자동 적용되어 보입니다.


------------------------------------------------------------------------------------------------------------------

1) 노드 js서버의 자바스크립트 파일1개: node.basic.js 파일, 노드js 1.x버전부터는 socket.get(), .set() 함수를 지원하지 않습니다. 그래서, 대체 방법으로 처리 하였습니다.

------------------------------------------------------------------------------------------------------------------

var port = 9001;
var app = require('express')();//express 웹프레임웍의 일반적인 사용과정.
var http = require('http').Server(app);//http서버 객체생성 시 app(express) 프레임웍을 전달.
var io = require('socket.io')(http);//socket.io 소켓통신 객체생성 시 http서버 객체를 전달.
var msg = {//전역변수로 설정. 이유는,신규사용자가 페이지로딩시 현재상태를 가져갈수 있도록 처리
   msg: '' //초기에는 실행상태를 갖지 않게 한다.
  };
//.listen은 클라이언트에서 서버로 접속을 받기위해 대기하는 명령.
http.listen(port, function(){//노드js서버 실행여부 확인, 정상실행되었다면, 익명콜백함수 실행.
    console.log('Socket IO server listening on port : ' + port);//서버콘솔에 listening on...이 출력.
});

//.on은 클라이언트에서 서버로 소켓통신(명령또는 데이터를 주고받기)위해 대기하는 명령
io.on('connection', function(socket){//클라이언트에서 connect 소켓연결이 발생하면 callback(socket)함수를 실행.
 console.log('a user connected');//서버콘솔에 a user connected를 출력.
 socket.on('disconnect', function(){//클라이언트에서 disconnect 소켓연결끊김이 발생하면, 익명콜백함수 실행.
  console.log('user disconnect');//서버콘솔에 user disconnect 출력.
 });
 socket.on('comment_join', function(data) {
  var room = data.bo_table + "|" + data.wr_id;
  socket.join(room);
  //socket.set('room', room);
  socket.room = room;
  console.log('디버그1'+socket.room);//디버그1
 });
 
 //클라이언트에서 메세지가 수신되면
 socket.on('comment_delete', function(data) {
  console.log('디버그3'+data.comment_id);//디버그1
  io.emit('comment_delete', data);
 });
 socket.on('comment_update', function(data) {
  if(socket.room) {
   console.log('디버그2'+socket.room);//디버그2
   console.log(data);
   io.emit('comment_view', data);
  }
  /*
  socket.get('room', function(err, room) {
   if(err) {
    console.log(err);
   } else {
    console.log(data);
    io.sockets.in(room).emit('comment_view', data);
   }
  });
  */
 });
});

-------------------------------------------------------------------

2) 그누보드 basic 스킨을 수정한 부분을 올려 놓습니다.

-------------------------------------------------------------------

수정하거나 추가한 파일: gnu5/skin/board/basic (PC용), gnu5/mobile/skin/board/basic (모바일용)

- PC/모바일공통작업: _common.php, async_comment.php 추가, view_comment.skin.php 수정

- 소스중간에 주석구문에 내용이 표시가 되어있습니다. ( 검색키워드: " 노드js추가 " )

- 스킨(소스)파일압축

pc.zip (PC용 게시판 basic스킨 수정본)

mobile.zip (모바일용 게시판 basic스킨 수정본)

mobile.zip
0.02MB
pc.zip
0.02MB

관련글 더보기

댓글 영역