Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

node.js - Socket.io 404 error

I have followed Jeffrey way's tutorial.
Tutorial:
https://laracasts.com/series/real-time-laravel-with-socket-io/episodes/1

this is my index.js

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

server.listen(3000);

app.get('/', function(request, response){   
   response.sendFile(__dirname+'/index.html'); 
});

io.on('connection', function(socket){   
   console.log('A connection is made'); 
});

Some people say its the version and year. The code above works on 2014 I think.

This is my html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"></meta>
    <title>Chat Lesson</title>
</head>
<body>
    <h1>Hello world!</h1>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
    <script type="text/javascript">
        var socket = io();
    </script>
</body>
</html>

I have done a lot of research. Some people say the sequence is important but I have found so many sequence.

My error:

GET http://chat-lesson.local:8888/socket.io/?EIO=3&transport=polling&t=1515636281477-74 404 (Not Found)

My question:
Why is it 404 not found? I have followed Jeffrey way's tutorial in every step and the tutorial was only short like 5-8mins.

  • Mamp Pro 4
  • NPM 3.10.10

I tried using server.listen(8888);

events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::8888
    at Object.exports._errnoException (util.js:1022:11)
    at exports._exceptionWithHostPort (util.js:1045:20)
    at Server._listen2 (net.js:1259:14)
    at listen (net.js:1295:10)
    at Server.listen (net.js:1391:5)
    at Object.<anonymous> (/Users/kendantinio/Documents/Freelancer/blvnp/chat-lesson/index.js:5:8)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your server is listening on port 3000, but the socket.io URL you show is port 8888. If you do have some other server running on port 8888 (perhaps your PHP server), it's not this one that's running socket.io.

To understand exactly what fix is needed, this raises a question about what's the URL of the page you show the HTML for? What does the browser show in the URL bar when you display that page? Your node.js code implies you're intending to load that page from the port 3000 node.js server, but the client code you show would not be loading it from port 8888 if that's the case.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...