使用socket.io时遇到问题,找不到socket.io.js.

时间:2017-03-16 20:48:27

标签: javascript node.js sockets

我在控制台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;
&#13;
&#13;

2 个答案:

答案 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。我测试了它,它工作得很好。