无法加载资源socket.io

时间:2016-03-16 00:07:33

标签: javascript node.js socket.io

我想在我的node.js应用程序中使用socket.io,但是我的客户端无法从我的服务器获取库,我不知道为什么。

错误:无法加载资源:服务器响应http://localhost:3000/socket.io/socket.io.js状态为404(未找到) 服务器站点:

    var express = require('express');
    var app = express();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);

    app.use(express.static('public'));

    app.get('/', function (req, res) {
      res.sendFile( __dirname + "/" + "index.html" );
    });

    app.listen(3000, function () {
      console.log('Example app listening on port 3000!');
    });

    io.on('connection', function(socket){
      console.log('a user connected');
    });

客户方:

<head>
    <link rel="stylesheet" href="/stylesheets/style.css" />
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io();
    </script>
</head>

3 个答案:

答案 0 :(得分:1)

您的index.html代码无法找到socket.io,因为您只发送了Index.html作为响应。请尝试以下代码。

使用以下代码:

//"client" is folder for client code which contains index.html
    app.use(express.static(__dirname + '/client'));

删除以下代码。 Node.js会自动找到index.html。

 app.get('/', function (req, res) {
  res.sendFile( __dirname + "/" + "index.html" );
});

更改index.html 新代码:

<script src="https://cdn.socket.io/socket.io-1.3.7.js"></script>

旧代码:

<script src="/socket.io/socket.io.js"></script>

答案 1 :(得分:0)

我不知道您的代码无法正常工作的原因,但如果正确安装了socket.io,则它会自动在Express中配置路由以满足/socket.io/socket.io.js的请求。所以,显然在你的情况下没有正确配置/安装socket.io。

我可以告诉你,Express和socket.io的这个初始化有效并且没有你说的问题:

var express = require('express');
var app = express();
var server = app.listen(80);
var io = require('socket.io')(server);

答案 2 :(得分:0)

在学习Node.js时,我的index.html中遇到了同样的问题。 控制台提示类似错误

我通过在项目目录中执行npm r socket.io来删除了socket.io模块,并使用npm i socket.io重新安装了它,然后工作正常。