web-dev-qa-db-fra.com

node.js /socket.io/socket.io.js introuvable

je continue à obtenir l'erreur /socket.io/socket.io.js 404 (introuvable) Uncaught ReferenceError: io n'est pas défini

mon code est

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

server.listen(3000);

et

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

quel est le problème ???

toute aide est la bienvenue!

34
hausinho

Copier socket.io.js dans un dossier public (quelque chose comme resources/js/socket.io.js) n'est pas la bonne façon de le faire.

Si le serveur Socket.io écoute correctement votre serveur HTTP, il servira automatiquement le fichier client via http://localhost:<port>/socket.io/socket.io.js, vous n'avez pas besoin de le rechercher ni de le copier dans un dossier accessible au public en tant que resources/js/socket.io.js et le servir manuellement.

Exemple de code 
Express 3.x -Express 3 nécessite l'instanciation d'un serveur http.Server pour qu'il attache socket.io au premier 

var express = require('express')
  , http = require('http');
//make sure you keep this order
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

//... 

server.listen(8000);

Bonne codage :)

61
Amol M Kulkarni

Comment trouver socket.io.js pour le côté client

installer socket.io

npm install socket.io

trouver le client socket.io

find ./ | grep client | grep socket.io.js

résultat:

./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js

copier socket.io.js sur vos ressources:

cp ./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js /home/proyects/example/resources/js/

dans votre html:

<script type="text/javascript" src="resources/js/socket.io.js"></script>
10
ZiTAL

Il semble que cette question n'ait peut-être jamais été résolue (bien qu'il soit peut-être trop tard pour le PO, je vais y répondre pour tous ceux qui l'auront à l'avenir et qui doivent résoudre le problème).

Au lieu de faire npm install socket.io, vous devez faire npm install socket.io --save pour que le module socket.io soit installé dans votre dossier de développement Web (exécutez cette commande à l'emplacement de base/où est index.html ou index.php). Cela installe socket.io dans la zone dans laquelle la commande est exécutée, mais pas globalement. En outre, il corrige/met à jour automatiquement votre fichier package.json afin que node.js sache qu'il se trouve là.

Puis changez votre chemin source de '/socket.io/socket.io.js' à 'http://' + location.hostname + ':3000/socket.io/socket.io.js'.

7
Blubberguy22

... "Vous vous demandez peut-être d'où vient le fichier .s ..socket.io/socket.io.js, puisque nous ne l'ajoutons ni ni n'existe sur le système de fichiers. C'est. fait par io.listen sur le serveur. Il crée un gestionnaire sur le serveurpour servir le fichier de script socket.io.js. "

extrait du livre Socket.IO Web en temps réel Développement d’applications, page 56

1

bien que cela n'ait rien à voir avec l'OP, si vous rencontrez ce problème tout en conservant le code de quelqu'un d'autre, vous constaterez peut-être que le problème est dû au paramétrage du codeur io.set('resource', '/api/socket.io'); dans le script d'application. le code serait <script>type="text/javascript" src="/api/socket.io/socket.io.js"></script>.

0
jcomeau_ictx

Vous devez simplement suivre https://socket.io/get-started/chat/ et tout fonctionnera. 

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
http.listen(3000, function(){
  console.log('listening on *:3000');
});
0
Tomas Kukis