socket.io-ReferenceError: io n'est pas défini

je suis en train d'écrire une application pour Android 2.3.5 (qui sera également compatible avec iOS). Je souhaite transférer des données de L'application HTML/Javascript vers un programme Python sur un serveur (qui utilise le moteur Torsadé pour récupérer les données).

j'ai essayé beaucoup de choses et j'ai regardé divers forums, réponses, tutoriels, et pages web--y compris la plupart d'entre eux ici--et je n'arrive pas à trouver de réponse. Voici le Javascript que j'ai dans mon index.fichier html:

<script src="socket-lib/socket.io.js"></script>
<script type="text/javascript" charset="utf-8">
function sendData() {
    try {
        var socket = io.connect('http://mywebsite.com:12345');
        socket.on('connect', function(data) {
            socket.send('Hello.');
            socket.on('message', function (msg) {
                socket.send('This is where I send data?');
            });
        });
    }
    catch(err) {
        alert('ERROR: socket.io encountered a problem:nn' + err);
    }
} // end of sendData

Si vous Je ne sais pas, je suis encore assez confus comment cela fonctionne; Je ne peux même pas tester quoi que ce soit. L'erreur qui revient sans cesse est ReferenceError: io is not defined. Certains sites ont utilisé quelque chose comme var io = require('socket.io');. Mais il en résulte la même erreur:ReferenceError: require is not defined.

j'ai mis le dossier socket-lib dans assets / www, où toute autre source Javascript devrait aller. C'est aussi l'endroit où l'indice.fichier html est. De nombreux sites utilisent <script src="/socket.io/socket.io.js"></script>, mais cela n'a aucun sens pour moi. De nombreux sites impliquent également l'utilisation de noeuds.js, mais je n'ai jamais le voir partout.

Comment faire pour que ça marche?

Répondre modifications:

je l'ai essayé dans google Chrome, et c'est de me donner un Uncaught ReferenceError: require is not defined pour le socket.io.js file. J'ai donc décidé de m'approvisionner en require.js droit devant elle. Puis il donne l'erreur Uncaught Error: Module name "socket.io-client" has not been loaded yet for context. Puisque je ne l'utilise pas, je m'en fiche. Lorsque je tente la connexion, cependant, il donne le même io is not defined erreur. Quand je définir comme var io = require('socket.io'), l'erreur est Error: Module name "socket.io" has not been loaded yet for context: _ http://requirejs.org/docs/errors.html#notloaded. J'ai regardé le site, et il ne m'aide pas à tous. Quand j'essaie de mettre "require" comme argument de fonction, une autre erreur se produit:TypeError: undefined is not a function.

28
demandé sur Ness 2012-08-17 01:04:22

8 réponses

j'ai trouvé la réponse pour quelqu'un qui est extrêmement confus par l'horrible manque de documentation de socket.io.

Vous ne pouvez pas source /socket-lib/socket.io.js,

vous devez source http://yourwebsite.com:12345/socket.io/socket.io.js.

Le serveur automatiquement le reste pour vous.

49
répondu Ness 2017-03-20 01:24:12

Je l'ai résolu moi-même en changeant l'index.html pour importer le client socket io de bower, j'ai d'abord installé le composant bower:

 bower install socket.io-client

puis j'ai changé la référence de l'index.html :

 <script src="bower_components/socket.io-client/socket.io.js"></script>

Ou le fichier peut être trouvé à lib/socket.io-client/dist/socket.io.js

5
répondu shacharsol 2017-08-13 23:32:50

Lors de la prise de socket.io de travailler avec de nombreux autres bibliothèques à l'aide de besoin.js j'ai eu la même erreur, il s'est avéré être causés en raison d'essayer de charger le socket.io.js fichier dans le même dossier /js que le reste des autres fichiers.

le Placer dans un dossier séparé, il fixe pour moi, vous pouvez voir l' code dans ce gist mais tous, j'ai changé pour le faire fonctionner, c'était ça:

au lieu de:

socketio: 'socket.io',

Utilisation:

socketio: '../socket.IO / socket.io',

Pas sûr de la raison de ce comportement, mais j'espère que cela vous aide.

1
répondu guerrerocarlos 2012-09-06 05:11:15

écrire le code côté serveur dans socket.io.js file et try src="/socket.io/socket.io.js"

espérons que cela permettra de résoudre votre problème

1
répondu Sudhakar P 2018-06-05 12:22:35

Cela ressemble à votre navigateur ne peut pas trouver le socket.io.js fichier. Vous pourriez essayer d'ouvrir l'index.html sur votre ordinateur avec Firefox+Firebug ou les outils de développement Web Chrome et regardez comment le .fichier js est demandé. De l'autre côté, vous pouvez vérifier les logs sur le serveur du web .js si des erreurs n'ont pas été trouvées dans un fichier.

require fonction serait assurée par ex:RequireJS, mais vous devez tout de même configurer les chemins vos scripts correctement pour qu'il fonctionne.

0
répondu Stefan Seemayer 2012-08-16 21:14:04

j'ai réussi à passer à travers ceci, et j'ai gaspillé environ une heure, sur quelque chose qui s'est avéré être une erreur très basique.

Lorsqu'une fonction n'est pas définie? Telles que " Uncaught ReferenceError: io n'est pas défini ". Cela ne signifie-t-il pas que la fonction est "utilisée" avant d'être "créée"?

dans la partie de mon fichier HTML qui "appelle" les fichiers javaScript, il regardé comme ceci :

<script src='./js/playerChatter.js'></script> <!-- this one calls io -->
<script src="http://localhost:2019/socket.io/socket.io.js"></script><!-- This Creates io -->

et je modifié ce

<script src="http://localhost:2019/socket.io/socket.io.js"></script> <!-- This Creates  io -->
<script src='./js/playerChatter.js'></script> <!-- this on calls io -->

donc maintenant l'item "io", qu'il s'agisse d'un objet ou d'une fonction... Est en fait créé avant d'être utilisé :D

amusez-vous bien!

0
répondu Mat-e 2013-04-22 05:23:16

pour moi après avoir débogué toutes les suggestions très utiles, il s'est avéré que mon serveur de noeuds s'était arrêté. Je l'avais lancé manuellement dans une fenêtre de terminal pendant dev.

assurez-vous de votre noeud [yourservercode].js tourne sur le port spécifié! : -]

0
répondu Tim T 2013-05-11 19:24:33

j'utilise jspm.

Ajouter ceci:

import 'btford/angular-socket-io/mock/socket-io';
0
répondu Vitaliy Demchuk 2017-05-12 21:07:31