인터넷에 있는 웹페이지 채팅인데 예시를 따라하는데 오류가 남
서버측 코드는
var socketio = require('socket.io')
, express = require('express')
, http = require('http')
, fs = require('fs');
var app = express();
app.set('port',3033);
var server = http.createServer(app).listen(app.get('port'),function(){
console.log("express server listening on port "+app.get('port'));
});
app.get('/',function(res,req){
fs.readFile('index.html',function(error, data) {
res.writeHead(200,{'Content-Type': 'text/html'});
res.end(data);
});
});
var io = socketio.listen(server);
io.sockets.on('connection',function(socket){
socket.on('join',function(data){
socket.join(data.roomname);
socket.set('room',data.roomname);
socket.get('room',function(error,room) {
io.sockets.in(room).emit('join',data.userid);
});
});
//message
socket.on('message',function(message){
socket.get('room',function(error,room) {
io.sockets.in(room).emit('message',message);
});
});
socket.on('disconnect',function(){});
});
클라이언트측 코드는
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.7.1.js"></script>
<script src="http://localhost:3033/socket.io/socket.io.js"></script>
</head>
<body>
<div id="log">
<span>아이디: <input type="text" id="userid"/></span>
<span>방이름: <input type="text" id="roomname"/></span>
<span><input type="button" id="enter" value="입장"/></span>
</div>
<div id="chat" style="display:none;">
<div style="width: 300px; height: 300px; border: solid 1px;" id="txtarea">
<dl id="txtappend">
</dl>
</div>
<br/>
<input type="text" style="width:255;" id="txt" /><input type="button" value="Enter" id="btn"/>
</div>
<script>
$(document).ready(function(){
var socket = io.connect('http://localhost:3033');
//아이디, 채팅방 이름을 입력 후 버튼을 누르면 이벤트를 실행 합니다.
$('#enter').click(function(){
var userid=document.getElementById('userid');
var roomname = document.getElementById('roomname');
//Server로 접속 유저아이디와 접속한 채팅방 이름을 전송합니다.
socket.emit('join',{'userid': userid.value, 'roomname': roomname.value});
document.getElementById('log').style.display = 'none';
document.getElementById('chat').style.display='block';
});
//새로 접속한 사용자가 있을 경우 알림을 받습니다.
socket.on('join',function(data){
alert(data);
$('#txtappend').append('<dd style="margin:0px;">'+data+'님이 접속 하셨습니다.</dd>');
});
//메시지 전송 이벤트입니다.
$('#btn').click(function(){
var message = $('#txt').val();
socket.emit('message',message);
});
socket.on('message',function(data){
$('#txtappend').append('<dd style="margin:0px;">'+data+'</dd>');
$('#txt').val('');
});
});
</script>
</body>
</html>
이거구 npm install socket.io express http fs -save 해서 모듈 설치하고 node app.js 하면 서버는 listening이 되는데
브라우저에 localhost:3033을 치게되면 server를 실행시킨 콘솔창에
![viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b38a77a16fb3dab004c86b6fefd5355bb210043215885275eaf1e52735fb44d330be2545555c536636063b5a7d7a3edde87380800bd6c2aef1]()
자꾸 이렇게 뜸 이유를 모르겠는데 해결좀 해주삼
존1나읽기싫게 코드올려놨네 알려주러 왔다가도 안읽고내릴듯 ㅅㄱ
req res 인자 순서바뀜 ㅂㅅ아
go였다면 인자 타입체킹에서 걸러져서 컴파일조차 안됐을텐데 후후
app.get('/',function(req, res){ 로 수정하시길!
감사합니다 해결됬어요 ^^