2013-12-08 7 views
2

나는 Node.js를 가진 채팅 응용 프로그램을 만들려고하고이 주소 스크립트 내 app.js입니다채팅 응용 프로그램 및 socket.io

Socket.IO에있어

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server); 

server.listen(3000); 

app.get('/', function(req, res){ 
    res.sendfile(__dirname + '/game.php'); 
}); 

io.sockets.on('connection', function(socket){ 
    socket.on('send message', function(data){ 
     io.sockets.emit('new message', data); 
    }); 
}); 

.html 중에서 모든 것을 잘

작동으로하지만 난 대신에

을 다운로드에 시작 페이지를로드의에 .php로 변경하면 "로컬 호스트 : 3000"

작동하도록 변경하려면 어떻게해야합니까?

game.php 코드가 필요한 경우 게시하도록 요청하십시오.

UPDATE

: 이 부분

app.get('/', function(req, res) { 
    res.setHeader('Content-Type', 'text/html'); 
    res.sendfile(__dirname + '/game.php'); 
}); 

을 편집하고 지금은 나에게주는

브라우저가 다운로드 한 첨부 파일로 파일을 보여줍니다 여부를 결정하거나 직접 열어야 경우 어떤
ReferenceError: text is not defined 
    at C:\Users\Mojtaba\Desktop\chat\app.js:9:33 
    at callbacks (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:161:37) 
    at param (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:135:11) 
    at pass (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:142:5) 
    at Router._dispatch (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:170:5) 
    at Object.router (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:33:10) 
    at next (C:\Users\Mojtaba\Desktop\chat\node_modules\express\node_modules\connect\lib\proto.js:190:15) 
    at Object.expressInit [as handle] (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\middleware.js:31:5) 
    at next (C:\Users\Mojtaba\Desktop\chat\node_modules\express\node_modules\connect\lib\proto.js:190:15) 
    at Object.query [as handle] (C:\Users\Mojtaba\Desktop\chat\node_modules\express\node_modules\connect\lib\middleware\query.js:44:5 
+0

'game.php'는 실제 PHP 스크립트인가 보통 HTML인가요? – Darkhogg

+0

그것은 PHP를 포함 – Mojtaba

+0

그럼 당신의 문제, 당신은 잘못된 도구를 사용하고 있습니다. 노드는 PHP를 읽는 법을 모릅니다. 게임 논리는 JavaScript로 구현되어야합니다. 게임 로직 이외의 – Darkhogg

답변

0

Content-Disposition HTTP 헤더입니다.

시도는 파일 전송하기 전에이 추가 :

res.setHeader ('내용 - 처리', '인라인');

이제 브라우저는 파일을 첨부 파일로 취급하지 않아야합니다. 아마도 express는 파일의 확장자를보고 PHP 확장을 인식하지 못하기 때문에 파일을 첨부 파일로 다시 보냅니다.

그러나 브라우저에서 PHP를 해석 할 수 없으므로 열려있는 파일이 브라우저에 표시되지 않아야합니다. PHP 파일은 백엔드에서 해석되고 브라우저로 보내지지 않습니다.

예를 들어 php-node을 사용하여 Express에서 뷰 엔진으로 PHP를 사용할 수 있습니다. 자주 사용하지 않는 것으로 생각합니다.

익스프레스의 기본보기 엔진은 jade이고 mustache도 자주 언급되며 handlebars입니다.

서버 측 대신 클라이언트 측에서 템플릿 엔진을 사용하려면 angular.js을 선택하십시오.

브라우저로 PHP 파일을 보내는 것이 문제 해결을위한 해결책이 아니라는 것을 이해하는 것이 중요합니다. 먼저 article 또는 2 번째로 서버 측과 클라이언트 측 템플릿의 차이점을 읽어보십시오.