Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
computer:basteln:nodejs [2014/09/23 14:34]
gaubes [Socket.io]
computer:basteln:nodejs [2018/03/16 21:11] (aktuell)
Zeile 35: Zeile 35:
 <​code>/​usr/​local/​bin/​node <​code>/​usr/​local/​bin/​node
 </​code>​ </​code>​
-Für npm analog dazu:+Für npm (node package manager) ​analog dazu:
 <​code>/​usr/​local/​bin/​npm <​code>/​usr/​local/​bin/​npm
 </​code>​ </​code>​
 +Der npm dient dazu, Module von node.js zu installieren.
  
 Eine Hello-World-Seite lässt sich folgendermaßen auf den Localhost bringen (bis zum Neustart): Eine Hello-World-Seite lässt sich folgendermaßen auf den Localhost bringen (bis zum Neustart):
Zeile 161: Zeile 162:
    
 // Socket.io-Events // Socket.io-Events
-io.sockets.on('​connection',​ function (socket) {+io.sockets.on('​connection',​ function (socket) { // wartet und reagiert auf Event
   console.log('​[socket.io] Ein neuer Client (Browser) hat sich verbunden.\n'​);​   console.log('​[socket.io] Ein neuer Client (Browser) hat sich verbunden.\n'​);​
    
   console.log('​[socket.io] SENDE "​welcome"​-Event an den Client.\n'​);​   console.log('​[socket.io] SENDE "​welcome"​-Event an den Client.\n'​);​
-  socket.emit('​welcome',​ "Hello world"​);​ +  socket.emit('​welcome',​ "Hello world"​); ​       //​löst einen Event aus 
- +                                                // soll Nachricht an alle Clients gesendet werden so muss  
 +                                                //​io.socket.emit() ausgeführt werden 
 +                                            ​
   socket.on('​user agent',​ function (data) {   socket.on('​user agent',​ function (data) {
     console.log('​[socket.io] EMPFANGE "user agent"​-Event vom Client:'​);​     console.log('​[socket.io] EMPFANGE "user agent"​-Event vom Client:'​);​
Zeile 177: Zeile 180:
 Sobald die Seite im Browser aufgerufen wird, erhält der Server darüber eine Benachrichtigung und sendet seinerseits eine Nachricht zurück an den Client, der daraufhin seinen User Agent-String als Beispiel wieder an den Server zurückschickt. Sobald die Seite im Browser aufgerufen wird, erhält der Server darüber eine Benachrichtigung und sendet seinerseits eine Nachricht zurück an den Client, der daraufhin seinen User Agent-String als Beispiel wieder an den Server zurückschickt.
  
 +Möchte man also Kommunizieren via Chat (auch Gruppenchat),​ Online-Spiele (Position der Spieler) oder andere Sachen, die zeitgleich aktualisierte Informationen an mehrere Endnutzer benötigen, programmieren,​ so bietet sich Socket.io an.
 +
 +===== Eigene Module =====
 +Natürlich kann man sich Module, die man gerne benutzen möchte auch selbst schreiben und einbinden. ​
 +Dazu werden in einer .js-Datei, die Dinge gespeichert,​ die übergeben werden sollen, also bpsw. Funktionen und/oder Variablen. Wichtig dabei ist es allerdings, dass man, was man übergeben will, auch exportiert. Dabei gibt es folgende Möglichkeiten:​
 +<code javascript>​
 +var hobby = '​sport';​
 +var multiplyBy2= function(n){
 +    return n*2;
 +};
 +
 +var multiplyBy10 = function (n){
 +    return n*10;
 +};
 +
 +exports.hobby = hobby;
 +exports.malZehn = multiplyBy10;​
 +</​code>​
 +
 +Würde man dieses nun einbinden, so wird die Funktion, die hier als ''​multiplyBy10''​ benannt wurde als ''​malZehn''​ importiert und die Funktion ''​multiplyBy2''​ wird nicht importiert.
 +Eine Datei namens multiplier.js lässt sich (abhängig vom Dateipfad) folgendermaßen einbinden_
 +<code javascript>​
 +var m = require('​./​multiplier.js'​);​
 +</​code>​
 +Mit dem erzeugten ''​m''​ lassen sich nun der Exportierte Inhalt der multiplier.js-Datei benutzen.
 +Dies lässt sich in der Node-Konsole ganz einfach testen:
 +<code javascript>​
 +m // Enter drücken
 +
 +<hobby : '​sport', ​          //​Ausgabe
 + ​malZehn:​ [Function]>​
 +//​--------------------
 +
 +m.multiplyBy2 ​              // Enter drücken
 +undefined ​                  //​Ausgabe
 +//​--------------------
 +
 +m.hobby ​                    // Enter drücken
 +'​sport' ​                    //​Ausgabe
 +
 +</​code>​
 +Hierbei sieht man, dass wirklich nur die Exporte auf m anwendbar sind. Weiter fällt auf, dass sich damit auch Assoziative Felder erstellen lassen.
 +Führt man mehrmals hintereinander den require-Befehl auf die gleiche Variable, so fällt auf bspw. mit nem ''​console.log()''​),​ dass diese Variable nur einmal und nicht jedesmal überschrieben wird.
 +Eine weitere Möglichkeit,​ die das Export von oben überschreibt ist Folgende:
 +<code javascript>​
 +module.exports = {
 +    hobby : hobby,
 +    malZehn : multiplyBy10,​
 +    test : function(){
 +        console.log('​test'​);​
 +    }
 +}
 +</​code>​
 +
 +Wäre vorher im Code etwas anderes Exporttiert werden, wie etwa die ''​multiplyBy2''​-Funktion,​ so würde ''​module.exports''​ dieses überschreiben,​ so dass es schließlich nicht mehr, da nicht enthalten, exportiert wird.
 +Dieses lässt sich ebenfalls wie oben mittels Node-Kosole analog testen.