채팅 서버 + 클라이언트
링크
http://phprocks.com/?module=post&action=view&seq=373 (670) http://www.phprocks.com/?page=chat (674)
데모 사이트 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'];
}
다운로드 링크 : 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'];
}
첨부파일
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 15개
소스 다운 받아 설치 하고 포트 변경후 테스트 했습니다.
서버 실행은 되는데
웹에서 접속하면 방 만들기가 안돼네요...
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의 버전 문제일 수도 있을까요?
서버쪽 소스 다시 한번 확인 부탁드릴께요..
혹시 가능하시다면, 현재 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로 분명 앞서 설명한 부분이 있을 것이구요 로그인 계정 정보를 서로 연결 시키시면 됩니다.
감사합니다.