2013-12-08 100 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或兩個關於服務器端和客戶端模板之間差異的文章。