2017-03-16 108 views
-1

我在控制檯GET http://localhost/socket.io/socket.io.js 404(Not Found)中收到此錯誤。我用npm install來安裝express和socket.io。
每次我嘗試訪問本地主機:3000它的下載,而不是顯示chat.php
文件這是我的javascript代碼使用socket.io,socket.io.js未找到問題

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

 
server.listen(3000); 
 

 
users = []; 
 
connnection = []; 
 

 
console.log('Server running!'); 
 

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

 
io.sockets.on('connection', function(socket){ 
 
    connections.push(socket); 
 
    console.log('Connected: %s sockets connected', connections.length); 
 

 
    //Disconnect 
 
    socket.on('disconnect', function(data){ 
 
    connections.splice(connections.indexOf(socket),1); 
 
    console.log('Disconnected: %s sockets connected', connections.length); 
 
}); 
 
});

這是我加入PHP文件

<script src="/socket.io/socket.io.js"></script> 
 
<script> 
 
$(function(){ 
 
    var socket=io.connect(); 
 
}); 
 
</script>

+0

你期待與你一起發生'res.sendFile(__ dirname +'/game.php')'?你知道PHP不會在用戶的瀏覽器中運行,但只能在服務器上運行,因此將PHP文件發送到瀏覽器(這正是你正在做的)不會做一些有用的事情嗎?當你做'res.sendFile(__ dirname +'/game.php');'?時,你想要發生什麼? – jfriend00

+0

@ jfriend00我是這個socket.io的新手,我正在學習一個教程。在訪問本地教程時,訪問本地主機:3000它被重定向到chat.html – Daniel

+0

我想我會看到...當你通常去(例如)www.example.com/page.php你會看到網頁,它會出現工作方式與您訪問www.example.com/page.html時相同 但是,php url實際上會返回php文件的HTML解釋。在這個例子中,我不相信這會起作用,因爲node.js首先不會通過解釋器運行你的'game.php'。如果您將它重命名爲'game.html',它應該按預期工作,因爲文件中沒有php代碼。 –

回答

0

res.sendFile(__dirname + '/game.php');只是發送一個原始的PHP文件到瀏覽器客戶端。相反,你需要發送給瀏覽器的是HTML。因此,您必須將您的應用程序更改爲在node.js中運行,而不是PHP,否則您必須執行該PHP文件並獲取其輸出並將其發送到瀏覽器。

通常,如果您希望通過PHP生成頁面,則根本不會使用node.js - 您只需使用PHP。如果您將node.js帶入等式的唯一原因是由於socket.io,那麼您可能應該直接使用socket.io與PHP,您可以在this question中閱讀。你可以使用node.js和PHP的混合,但如果你使用node.js來運行你的PHP,那麼它不會那麼高效。對於這種情況,你可能會更好地在不同的端口號上運行n​​ode.js中的socket.io,從而實現跨源訪問,並讓PHP成爲PHP。