Socket.io 404 Error

I followed the Jeffrey 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 their version and year. The code above works in 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 consistency is important, but I have found so much consistency.

My mistake:

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

My question is:
Why is he not found? I followed Jeffrey's study guide at every turn, and the textbook was only as short as 5-8 minutes.

  • 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) 
+1
source share
3 answers

Try to make this code.

 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res) { res.sendfile('index.html'); }); users = []; io.on('connection', function(socket) { console.log('A user connected'); socket.on('setUsername', function(data) { console.log(data); if(users.indexOf(data) > -1) { socket.emit('userExists', data + ' username is taken! Try some other username.'); } else { users.push(data); socket.emit('userSet', {username: data}); } }); socket.on('msg', function(data) { //Send message to everyone io.sockets.emit('newmsg', data); }) }); http.listen(3000, function() { console.log('listening on localhost:3000'); }); 

Let me know if it works.

+1
source

Your server is listening on port 3000, but the displayed URL for socket.io is port 8888. If you have another server running on port 8888 (maybe your PHP server), this is not the one that starts socket.io.

To understand exactly which fix is ​​needed, the question arises of which URL of the page you are displaying HTML on? What does the browser show in the URL bar when this page is displayed? Your node.js code implies that you are going to download this page from port 3000 of the node.js server, but the client code that you show will not download it from port 8888 if this happens.

+3
source

I add this because it is the first on Google and it took me 2 days to find a solution.

I am using Node.js and React, with socket.io-client

I managed to get it working by passing the URL and configuration object to the io namespace.

 import io from 'socket.io-client' const socket = io('http://localhost:3000', { reconnectionDelay: 1000, reconnection: true, reconnectionAttemps: 10, transports: ['websocket'], agent: false, upgrade: false, rejectUnauthorized: false }); 
+1
source

All Articles