我在控制台GET http://localhost/socket.io/socket.io.js 404(未找到)中收到此错误。我使用npm install来安装express和socket.io。
每当我尝试访问localhost:3000时,它会下载文件而不是显示 chat.php
这是我的javascript代码
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>
&#13;
答案 0 :(得分:0)
res.sendFile(__dirname + '/game.php');
只是将原始PHP文件发送到浏览器客户端。相反,您需要发送到浏览器的是HTML。因此,您必须更改您的应用程序以在node.js中运行而不是PHP,或者您必须执行该PHP文件并获取其输出并将其发送到浏览器。
通常情况下,如果您希望通过PHP生成页面,则根本不会使用node.js - 您只是使用PHP。如果你将node.js带入等式的唯一原因是socket.io,那么也许你应该直接使用socket.io,你可以在this question中阅读。您可以使用node.js和PHP的混合,但如果您使用node.js来运行PHP,则不太可能有效。对于这种情况,你可能最好在node.js中运行不同端口号上的socket.io,启用跨源访问,只需将PHP保留为PHP。
答案 1 :(得分:0)
我在这里找到了PHP的工作解决方案https://github.com/jdutheil/nodePHP。我测试了它,它工作得很好。