1
votes

I am trying to use in socket.io in my node.js app, but my client can't get the library from my sever and I don't know why.

Error: Failed to load resource: the server responded with a http://localhost:3000/socket.io/socket.io.js status of 404 (Not Found) Server site:

    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');
    });

Client side:

<head>
    <link rel="stylesheet" href="/stylesheets/style.css" />
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io();
    </script>
</head>
3
Have you install socket.io on your project?Adiya Buyantogtokh
yes I have socket.io installedlolix

3 Answers

1
votes

Your index.html code couldn't find socket.io because you are sendig only Index.html for response. Please try following code.

Use following code:

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

Remove following code. Node.js will find index.html automatically.

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

Change your index.html New code:

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

Old code:

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

I don't know exactly why your code isn't working, but if socket.io is installed properly, then it automatically configures a route in Express to serve the request for /socket.io/socket.io.js. So, apparently socket.io is not configured/installed properly in your situation.

I can tell you that this initialization of Express and socket.io works and does not have the problem you speak of:

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

I had the same problem in my index.html while learning Node.js. The console prompted similar error

I removed socket.io module by executing npm r socket.io in my project directory and re-installed it using npm i socket.io and then it worked fine.