7
votes

Socket.io non servi par node.js Server

Comme je l'ai compris, de http://socket.io/#how-a-utilisez , noeud .js sert automatiquement le fichier socket.io sur le serveur.

J'ai installé socket.io avec NPM installation socket.io et je peux voir qu'il réside dans nœud_modules Un niveau au-dessus de la racine du serveur.

serveur.js: xxx

index.html: xxx

démarrage du serveur fonctionne bien , mais lors de l'ouverture d'index.html, je reçois l'erreur suivante: xxx

idées?


1 commentaires

"Je peux voir qu'il réside dans Node_Modules un niveau au-dessus de la racine du serveur." Qu'entendez-vous par «la racine du serveur»? Pas confondu avec des traces d'Apache, peut-être? Les modules installés par NPM résident dans les repos NPM, ils ne doivent être nulle part en relation avec le script de noeud principal de votre projet. Un exiger ('socket.io') indique que l'installation est ok et que le problème est dans le code.


4 Réponses :


3
votes

édité: excuses, j'ai écrit quelque chose qui n'a pas répondu à votre question.

du côté du client, vous avez besoin des éléments suivants: p>

server.js
node_modules/ #Directory - same level as server.js
    socket.io #socket.io underneath that


8 commentaires

Je ne me souviens pas de moi-même avoir besoin d'effectuer de telles magies, le tutoriel d'introduction ne suggère pas non plus que. npm installer socket.io devrait faire le tour


BTW "Si vous êtes sous Windows", NPM prend en charge Windows maintenant?


1 / npm sous Windows => CF Stackoverflow Article - Stackoverflow.com/Questtions/7300132/... 2 / magie? :) Les tutoriels parlent d'installation de NPM. Ce qu'ils manquent, c'est si vous avez plusieurs projets avec la même bibliothèque. Ensuite, pour chaque projet, allez-vous exécuter NPM installer? La meilleure solution (IMO) est l'installe globalement NPM install -g -g , puis crée un lien sur IT NPM link . De cette façon, vous devez seulement installer au même endroit et mettre à niveau un seul endroit.


Heureux pourrait aider - si vous voulez faire une prise émit (pour transférer JSON) et événements personnalisés - un autre exemple - github.com/parj/node-websocket-demo/tree/socket_emit


Je crois que l'un d'entre nous est confondre quelque chose ici :-) Vous impliquez que NPM installer est un projet-local, tandis que NPM install -g est global. J'ai eu l'impression que NPM installer est local comme pour l'utilisateur actuel, pas un projet, donc (contraty à ce que vous dites) Vous ne le faites pas une fois pour un projet. Et surtout, vous avez besoin d'un accès racine pour faire un installer -g -g , n'est-ce pas? (Je ne peux pas vérifier ici)


Aussi NPM DOCS recommande une installation locale pour les packages que vous allez exiger ( ) .


Aussi merci pour la mise à jour sur nœud.js Statut sur Windows, il n'y avait pas de version Windows "autonome" du nœud / NPM et il n'a pas très bien fonctionné sur Cygwin ou MSYS, donc j'ai décidé de Configurez une VirtualBox avec Linux et un lecteur mappé (qui s'est avéré être une solution géniale à la fin). Bon à savoir qu'il y a une alternative maintenant!


En fait, vous avez raison :-) .. Depuis que je suis sur une machine virtuelle avec Ubuntu, je dispose donc d'un accès root et de la plupart du lieu de travail ne voudra pas contrôler la version qu'ils utilisent. Merci pour vos commentaires.



6
votes

Essayez d'écouter sur le serveur après la liaison avec Socket.io

Placez cette P>

var webSocket = socketIO.listen(httpServer);


0 commentaires

2
votes

Lorsque vous convertissez d'une application Express régulière:

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


0 commentaires

0
votes

Vous devez ajouter localhost à votre étiquette SRC Script SRC comme ci-dessous xxx pré>

ou vous pouvez également le même fichier qui se trouve dans le dossier Node_Modules P>

<script src="http://localhost:8253/node_modules/socket.io/client-dist/socket.io.js"></script>


0 commentaires