Socket.io – ReferenceError: io n'est pas défini

J'écris une application pour Android 2.3.5 (qui sera également compatible avec iOS). Je souhaite transférer des données du HTML / Javascript de l'application vers un programme Python sur un serveur (qui utilise le moteur Twisted pour récupérer les données).

J'ai essayé beaucoup de choses et j'ai examiné divers forums, réponses, tutoriels et pages Web, y compris la plupart d'entre elles, et je ne trouve pas de réponse. Voici le Javascript pertinent que j'ai dans mon fichier index.html:

  • Utilisation du courrier et du mot de passe pour vous authentifier via l'API REST
  • Recycler la vue - java.lang.NullPointerException
  • Simuler un clic sur un élément de menu dans Robolectric
  • Ressource dessins coloris Android
  • Android: question WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
  • Les cas d'utilisation de DropBoxManager?
  • <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:\n\n' + err); } } // end of sendData 

    Si vous ne pouvez pas le dire, je suis encore assez confus de savoir comment cela fonctionne; Je ne peux même pas tester quoi que ce soit. L'erreur qui continue d'apparaître est ReferenceError: io is not defined . Certains sites utilisaient 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 les ressources / www, où toute autre source Javascript devrait aller. C'est aussi là que le fichier index.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 node.js, mais je ne le vois jamais nulle part.

    Comment puis-je que cela fonctionne?

    Répondre aux modifications:

    Je l'ai essayé dans Chrome, et ça me donne un Uncaught ReferenceError: require is not defined pour le fichier socket.io.js. Donc, je décide de faire la demande dans l'obligation. Juste avant. Ensuite, il donne l'erreur Uncaught Error: Module name "socket.io-client" has not been loaded yet for context . Comme je n'utilise pas cela, je m'en fous. Lorsque j'essaie la connexion, cependant, elle donne la même erreur io is not defined . Lorsque je le définis 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 cela ne m'a rien aidé. Lorsque j'essaie de mettre "require" comme argument de fonction, une autre erreur se produit: TypeError: undefined is not a function .

  • Affichage de la carte suivant l'utilisateur - MyLocationOverlay fonctionnalité de type pour Android Maps API v2
  • Build android android - pas assez de mémoire pour démarrer jvm
  • Éclairer l'écran lorsque la notification a reçu l'Android
  • Android: Comment puis-je mettre en œuvre un premier didacticiel comme Go Launcher dans mon application?
  • Obtenir l'erreur "entrée en double: com / google / android / gms / internal / zzble.class" lorsque vous essayez d'ajouter un paquet
  • Android - Wake Up and Unlock Device
  • 7 Solutions collect form web for “Socket.io – ReferenceError: io n'est pas défini”

    J'ai trouvé la réponse pour quiconque se confond énormément avec l'horrible manque de documentation de socket.io .

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

    Vous devez http://yourwebsite.com:12345/socket.io/socket.io.js .

    Le serveur effectue automatiquement le reste pour vous.

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

      bower install socket.io-client 

    Alors j'ai changé la référence dans index.html à:

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

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

    Cela semble que votre navigateur ne trouve pas le fichier socket.io.js. Vous pouvez essayer d'ouvrir l'index.html sur votre ordinateur avec Firefox + Firebug ou les Outils de développement Web Chrome et voir comment le fichier .js est demandé. De l'autre côté, vous pouvez vérifier les journaux sur le serveur web servant au fichier .js s'il existe des erreurs de fichier introuvables.

    La fonction requise serait fournie par ex. RequireJS , mais vous devriez toujours configurer correctement les chemins vers vos scripts pour que cela fonctionne.

    Lorsque vous obtenez socket.io pour travailler avec de nombreuses autres bibliothèques utilisant require.js j'ai eu la même erreur, il s'est avéré être causé en raison d'essayer de charger le fichier socket.io.js à partir du même dossier / js que le reste de l'autre des dossiers.

    En le plaçant dans un dossier séparé, le réparé pour moi, vous pouvez voir le code dans ce style mais tout ce que j'ai changé pour le faire fonctionner était:

    au lieu de:

    Socketio: 'socket.io',

    Utilisation:

    Socketio: '../socket.io/socket.io',

    Je ne suis pas sûr de la raison de ce comportement, mais j'espère que cela vous aidera.

    Je me suis efforcé de me tromper et j'ai gaspillé environ une heure sur quelque chose qui s'est avéré être une erreur très fondamentale.

    Quand une fonction n'est pas définie? Tels que "Uncaught ReferenceError: io n'est pas défini". Cela ne signifie-t-il pas que la fonction est "utilisée" avant qu'elle ne soit "créée"?

    Dans la partie de mon fichier HTML, "appelle" les fichiers javaScript, il ressemblait à 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 l'ai changé à cela

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

    Alors maintenant, l'élément "io", qu'il s'agisse d'un objet ou d'une fonction … Est en train d'être créé avant qu'il ne soit utilisé: D

    S'amuser!

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

    Assurez-vous que votre nœud [yourservercode] .js fonctionne sur le port spécifié! : -]

    J'utilise jspm.

    Ajoute ça:

     import 'btford/angular-socket-io/mock/socket-io'; 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.