2013-12-08 62 views
2

我试图创建一个node.js的聊天应用和socket.io与node.js的聊天应用程序,并socket.io

这是我app.js与地址脚本

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代替它开始页面加载到下载它

在“localhost: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

什么决定,如果浏览器显示一个文件下载的attachement,还是应直接打开它是Content-Disposition HTTP标头。

尝试发送文件之前,补充一点:

res.setHeader( '内容处置', '内联');

现在浏览器不应再将该文件视为附件。可能发生的事情是,express正在查看文件的扩展名,并且因为它不能识别PHP扩展名,所以它将文件作为附件发回。

但是打开的文件不应该在浏览器中显示,因为浏览器无法解释PHP。 PHP文件意味着在后端进行解释,而不是发送到浏览器。

您可以使用PHP作为快递视图引擎使用例如php-node,买我不认为这是一个非常频繁的组合。

快递的默认视图引擎是jade,mustache也经常提到以及handlebars

如果您更喜欢客户端而不是服务器端的模板引擎,请检查angular.js

在开始之前,了解将PHP文件发送到浏览器并不是解决问题的解决方案很重要,请首先阅读一些article或两个关于服务器端和客户端模板之间差异的文章。