채팅 서버 + 클라이언트 > 그누보드5 플러그인

그누보드5 플러그인

그누보드는 다양한 기능을 추가하기 쉽습니다.

채팅 서버 + 클라이언트 정보

채팅 서버 + 클라이언트

본문

데모 사이트 http://www.phprocks.com/?page=chat

다운로드 링크 : http://phprocks.com/?module=post&action=view&seq=373


 -- 서버쪽 ---
채팅 서버를 설치하기 위해 node.js를 설치해야 합니다.

 node.js 다운로드 사이트 : http://nodejs.org

설치가 완료되시면,

1. 서버로 사용하실 곳에 server.js를 복사 합니다.

2. (변경) Socket.io 가 1.0으로 버전 변경이 되면서 각 메소드의 변경이 많아 기존 소스와 호환이 되지 않는 점 발견 하였습니다.  변경된 부분이 많아 새로운 버전으로 일괄적으로 변경하기는 어려울 듯 하며, 이 부분은 새로운 채팅 소스 제작시(좀 더 업그레이드 된 기능들 ) 적용할 예정입니다. 이 소스를 사용하는 경우 기존 버전의 socket.io 소스(0.9.16)를 다운 및 설치 할 수 있도록 package.json을 추가 하였으며, 설치 방법은 다음과 같습니다.
npm install

위 명령어로 socket.io와 forever 모듈이 자동 설치 됩니다.


3. server.js의  var io = require('socket.io').listen(1597)에서 1597를 사용하려는 포트로 변경하십시오.

4. server.js를 forever 모듈을 사용하여 실행 합니다.
 
    forever start server.js
   
    forever 모듈을 사용하는 이유는 node 서버가 죽지 않고 계속 실행되게 하기 위해서 입니다.



-- 클라이언트 쪽 --

1. chat.php와 chat_room.php의 소스에서 localhost 부분을 채팅 서버(server.js)가 실행되고  있는 주소 및 포트로 로 변경하세요.                                 
 예) http://123.123.123.123:5555   

2. 그누보드와 연동 할 시 chat_room.php의 소스 중  아래의 부분을 $member 배열의 적절한 값으로 변경하시면 됩니다.

if ( $_SESSION['user_id'] ) { // 회원 로그인 계정과 연동 하실려면 이 부분을  수정하세요
$nickname = $_SESSION['nickname'];
$account = $_SESSION['username'];
}
추천
4

댓글 전체

안녕하세요
소스 다운 받아 설치 하고 포트 변경후 테스트 했습니다.
서버 실행은 되는데
웹에서 접속하면 방 만들기가 안돼네요...
chat_room.php 접속을 해도 만들어진 방이 없구요.ㅠ.ㅠ
어떤곳을 봐야 할까요???
아 혹시 로컬인데도 방화벽을 열어야 되는가요???
안녕하세요, 답변이 많이 늦어졌네요. 요즘 여러가지로 바쁘다 보니..

제가 생각하기에는 chat.php에 있는 form에서
    <form method='get'>
<input type='hidden' name='page' value='chat_room' />
<input type='text' name='roomname' placeholder='생성할 방이름을 입력하세요' />
<input type='submit' value='방 만들기'/>
</form>

이 부분을 수정 한다는 것을 깜박 했나 봅니다. 위 형태는 그냥 제가 쓰는  CMS에서만 작동하는 쿼리 스트링 형태라 chat_room.php로 제대로 rooname 값이 넘어가지 않아서 그런가 봅니다. 혹시 그런 문제라고 한다면, 다음과 같이 수정해 주세요.
<?php
$url = "//".$_SERVER['HTTP_HOST'];

$pathinfo = pathinfo($_SERVER['REQUEST_URI']);
if ( $pathinfo['dirname'] ) $url .= $pathinfo['dirname']
?>
<form method='get' action='<?=$url?>/chatroom.php'>
<input type='text' name='roomname' placeholder='생성할 방이름을 입력하세요' />
<input type='submit' value='방 만들기'/>
</form>

수정된 파일은 새로 업데이트 해 놓겠습니다. 다시 다운로드 받으시면 될 듯 합니다.

감사합니다.
제가 서버쪽 설정을 잘 못한거 같은데 해결이 안돼네요..;;;
server.js 파일도 확인 한번 부탁드릴게요
글고 제 홈피로는 연결이 안돼는데
님꺼 홈페이지로는 연결이 되네요...채팅도 되구요..;;;;;
form 의 action 값을 님 홈페이지 주소를 넣으니 잘 됩니다.
근데 제 홈피에서는 안돼네요.ㅠ.ㅠ
저도 제대로 동작하지 않아서 질문 드립니다.
server쪽 로그를 보니까..
server.js의 103번째 줄에서 io.sockets.manager.rooms 에서.. rooms 가 define 되어 있지 않아서 읽을 수 없다고 하네요.
정확한 메세지는 아래와 같답니다.
-------------------------------------------------------------------------------------------
TypeError: Cannot read property 'rooms' of undefined
    at Socket.<anonymous> (/var/www/chat/server.js:103:48)
    ..............
    ..............
-------------------------------------------------------------------------------------------

이거 어떻게 수정해야 할까요??
혹시 socket.io의 버전 문제일 수도 있을까요?

서버쪽 소스 다시 한번 확인 부탁드릴께요..
좀 찾아보니.. Socket.io 가 업데이트 되면서. manager쪽이 많이 변경된 듯 하네요..
혹시 가능하시다면, 현재 server.js를 구동하고 있는 node-modules 폴더도 함께 올려주실 수 있으신가요?
안녕하세요, 지금 제가 근무 중이라 잠깐 바깥에 나와 있습니다. 내일 아침 퇴근 후에 살펴 보고 수정을 해서 수정 본을 다시 업데이트 하도록 하겠습니다.

socket.io 부분에 업데이트가 있었는지 이제야 알게 되었네요. 알려 주셔서 감사합니다.

혹시 지금 급하게  하셔야 하는 거라면, package.json 파일을 하나 만들고,
{
    dependencies : { socket.io : "옛날버전" }
}

이런식으로 작성하신 후 npm install 을 하시면 옛날 버전의 socket.io를 설치 하실 수 있습니다.
안녕하세요,

오늘 살펴보니 socket.io 1.0 버전으로 업그레이드 되어 있고 기존에 사용하단 메소드등이 사용 할 수 없다는 것도 확인 하였습니다. 하나 하나 수정해야 하나 이 부분은 새로 버전업 할 때 적용할 예정이구요.

일단 기존 버전(socket.io - 0.9.16)을 다운 및 설치 할 수 있도록 package.json을 추가 하였습니다.
새로운 소스를 다운로드 하신 후 npm install을 하시면 socket.io와 forever 모듈을 자동 설치 하실 수 있습니다.

설치 후 확인 해 보니 정상 작동 하더군요....
테스트 결과
<xmp> 같은 코드를 입력 하였을경우 전체 소스가 풀어지는 현상을 잡아 주셔야 할것 같네요. (방만들기에서..)

ps. 테스트로 쳐봤는데 풀어 져 버렸네요 죄송합니다.
안녕하세요,
버그를 찾아 주셔서 감사합니다. 관련 부분은 특수 문자를 포함 하지 않도록 영문, 숫자, 한글만 추출하여 방생성 할 수 있도록 코드를 수정하였습니다.

변경된 사항은 새로 업데이트 하였습니다.

감사합니다.
안녕하세요, 답변이 많이 늦었네요.
해당 소스의 경우, 그누보드를 염두해서 만든 것은 아닙니다. 그렇다보니 어느 사이트든지 쉽게 연동 할 수 있습니다.
다만 위에서 설명한 회원 정보 관련(세션이든지, 쿠키던지, 아니면 회원 정보를 담고 있는 배열)만 적절하게 변경하시면 사이트의 회원들의 계정으로 쉽게 연동 하실 수 있습니다.

xe는 사용해본적은 없지만, xe로 분명 앞서 설명한 부분이 있을 것이구요 로그인 계정 정보를 서로 연결 시키시면 됩니다.

감사합니다.
전체 3

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT