Pour autant que je sache, il n'y a aucune explication quant à l'emplacement du script côté client pour socket.io
si node.js
n'est pas utilisé comme serveur Web. J'ai trouvé tout un répertoire de fichiers côté client, mais j'en ai besoin dans une version combinée (comme il est servi lors de l'utilisation des serveurs Web node.js). Des idées?
socket.io.js est ce que vous allez mettre dans votre html côté client. Quelque chose comme:
<script type="text/javascript" src="socket.io.js"></script>
mon script se trouve:
/usr/local/lib/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
copiez ce fichier là où vous souhaitez que votre serveur le serve.
La meilleure façon de le faire est d'utiliser bower .
bower install socket.io-client --save
et incluez les éléments suivants dans le code HTML de votre application:
<script src="/bower_components/socket.io-client/socket.io.js"></script>
De cette façon, vous pouvez traiter la partie socket.io de votre client de la même manière que vous traitez tout autre package géré.
Je pense que le meilleur moyen est de le charger à partir de cette URL
src="/socket.io/socket.io.js"
sur le domaine où socket.io s'exécute. Ce qui est positif sur cette solution, c'est que si vous mettez à jour votre module socket.io npm, votre fichier client est également mis à jour et vous n'avez pas à le copier à chaque fois manuellement.
J'ai utilisé bower comme suggéré dans la réponse de Matt Way, et cela a très bien fonctionné, mais la bibliothèque elle-même n'avait pas son propre fichier bower.json
.
Cela signifiait que le plugin bower-main-files
Gulp que j'utilise pour trouver les fichiers JS de mes dépendances ne récupérait pas socket.io, et j'obtenais une erreur lors du chargement de la page. L'ajout d'un remplacement au bower.json
De mon projet a permis de contourner le problème.
Installez d'abord la bibliothèque avec bower:
bower install socket.io-client --save
Ajoutez ensuite le remplacement à bower.json de votre projet:
"overrides": {
"socket.io-client": {
"main": ["socket.io.js"]
}
}
Pour tous ceux qui exécutent wiredep et obtiennent le "socket.io-client n'a pas été injecté dans votre fichier". Erreur:
Modifiez votre tâche wiredep comme ceci:
wiredep: {
..
main: {
..
overrides: {
'socket.io-client': {
main: 'socket.io.js'
}
}
}
Si vous utilisez bower.json, ajoutez la dépendance socket.io-client.
"socket.io-client": "0.9.x"
Exécutez ensuite bower install pour télécharger socket.io-client.
Ajoutez ensuite la balise de script dans votre code HTML.
<script src="bower_components/socket.io-client/dist/socket.io.min.js"></script>
J'ai créé un client socket.io compatible avec Bower qui peut être installé comme ceci:
bower install sio-client --save
ou pour le développement:
bower install sio-client --save-dev
lien vers repo
si vous utilisez https://github.com/btford/angular-socket-io assurez-vous d'avoir votre index.html comme ceci:
<!-- https://raw.githubusercontent.com/socketio/socket.io-client/master/socket.io.js -->
<script src="socket.io.js"></script>
<!-- build:js({client,node_modules}) app/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<!-- ...... -->
<script src="bower_components/angular-socket-io/socket.js"></script>
<!-- endbower -->
<!-- endbuild -->
<script type="text/javascript" charset="utf-8">
angular.module('myapp', [
// ...
'btford.socket-io'
]);
// do your angular/socket stuff
</script>