2016-07-20 30 views
1

Ich schreibe einen Knoten-Server, der eine Webseite mit socket.io dient. Aber wenn ich die Seite laden, zeigt die Konsole den FehlerFehler 404 beim Versuch, socket.io zu erhalten

(index):6 GET http://localhost:3000/socket.io/socket.io.js

das ist wenig überraschend, gefolgt von:

(index):51 Uncaught ReferenceError: io is not defined

wenn ich die Dateien überprüfen, indem Sie die Seite in der Registerkarte Netzwerk geladen wird, zeigt es Ein Fehler 404 für socket.io. Aber überraschenderweise, als ich andere Programme gestartet habe, die ich mit socket.io gemacht habe, hat alles gut funktioniert. Der einzige Unterschied ist, dass ich für diesen einen Express benutze.

Hier ist mein Code:

app.js:

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

app.use(express.static("./app")); 

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

app.listen(3000); 
console.log("Server started in http://localhost:" + 3000); 


io.on('connection', function(socket){ 
    socket.emit('news', {hello :'world'}); 
    socket.on('my other event', function(data){ 
    console.log(data); 
    }); 
}); 

index.html:

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <script src="/socket.io/socket.io.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</head> 
<body> 

[Some unrelated text] 

<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function(data){ 
    console.log(data); 
    socket.emit('my other event', {my: 'data'}); 
    }); 

</script> 

</body> 
</html> 

Vielen Dank für Ihre Hilfe!

Antwort

2

ändern

app.listen(3000); 

zu

server.listen(3000); 

ist Ihr socket.io server an den http-Server angeschlossen. Siehe Zeile: var io = require('socket.io')(server); und nicht der Express-Server app.

So offensichtlich socket.io konnte nichts dienen, da der Server, der erwartet wurde, nie zu hören begann.

GETESTET! DIESE ANTWORT IST IN MEINER ÖRTLICHEN UMGEBUNG ERFOLGREICH REPLIZIERT !!

+1

Danke, das war es! Für Informationen, nachdem ich Ihre Lösung getestet habe, habe ich den gleichen Fehler, dass auf diesem anderen Thread, dass ich mit der Top-Antwort behoben. http://stackoverflow.com/questions/24526166/soceanio-err-connection-refused –

+0

Ja, ich wollte nur das Update für den anderen Thread zuvor testen. Danke für Ihre Hilfe ! –

+0

Prost. Gr8 es funktioniert! – Iceman

Verwandte Themen