web-dev-qa-db-fra.com

socket.io.js introuvable

Pour une raison quelconque, mon serveur de noeud ne peut pas desservir la route /socket.io/socket.io.js, J'obtiens toujours une erreur 404.
J'ai essayé de compiler différentes versions de nœuds (la version actuelle est 0.6.13 qui s'exécute également sur le serveur, où cela fonctionne réellement).
Depuis app.js, je reçois info: socket.io started et aucune erreur lors de l'appel du socket.io.js.

Je l'essaye depuis localhost et le port 8000 et j'utilise le framework express

Voici le code de app.js:

var express = require('express')
  , app = require('express').createServer()
  , io = require('socket.io').listen(app, { log: true });

app.listen(8000);

app.configure(function() {
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

io.sockets.on('connection', function (socket) {
   // all other stuff here
43
Dan Lee

Veuillez vérifier votre version Express. Express a récemment été mis à jour vers 3.0alpha dont l'API a été modifiée. Si 3.0, vous pouvez changer votre code en quelque chose comme ceci:

var express = require('express')
  , http = require('http');

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

...

server.listen(8000);

Même problème avec connect: https://github.com/senchalabs/connect/issues/500#issuecomment-462077

95
nguyenkha

Utilisation avec le framework Web Express 3 : ( de socket.io )

> Express 3 nécessite que vous instanciez un http.Server pour attacher socket.io au premier:

ce qui signifie - (1) vous devez créer une instance de serveur:

var app = express();
var http = require('http').createServer(app);

(2) le coupler avec le socket.io:

var io = require('socket.io');
io.listen(http);

et UNIQUEMENT ALORS - (3) faites écouter le serveur:

http.listen(8080);

assurez-vous de conserver cette commande!

3
Aviram Net

Après avoir installé le noeud 0.8.1, j'ai eu le même problème. Je viens de supprimer la carte node_modules dans mon dossier de projet et de réinstaller express/socket.io. Après cela, cela a bien fonctionné à nouveau avec le code de votre question.

1
r03

Installez Socket.io dans votre référentiel:

npm install socket.io --save 

Après, configurez le serveur:

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

   server.listen(app.get('80')); // not 'app.listen'

Et dans votre archive HTML/EJS ou autre que vous voulez, ajoutez:

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

Vérifiez si cela fonctionne avec Console (Chrome/Mozilla, etc.).

Dans mon exemple, j'utilise Chrome (Ctrl + Maj + I):

enter image description here

0
Sayuri Mizuguchi

Peut-être que cela pourrait vous aider, sur mon Ubuntu 11.10, je n'ai pas correctement configuré NODE_PATH variable, Si vous êtes sous linux/mac, essayez d'ajouter la ligne ci-dessous à votre fichier .bashrc/.zshrc.

export NODE_PATH=/usr/lib/node_modules:$NODE_PATH
0
Jacek Wysocki