// Dies wird benötigt um den Server zu starten
// hier definieren wir den port wo die daten durchgehen
// In diesem fall ist es port 8080, du kannst da jeden port eingeben den du willst
//aber bemerke, manche ports werden schon benutzt, falls so wird socket.io eine error meldung
//wiedergeben
var io = require("socket.io").listen(8080);
//Eine Variable für unser “automatch making”
TmpRoom="wait";
//Falls ein client zum Server verbindet, werden wir diese funktion laufen lassen:
io.sockets.on("connection", function (socket) {
//Wenn der client emits “adduser”, wird dieses ausgeführt
socket.on("joint", function(data){
// checkt falls es keinen anderen wartenden mitspieler gibt
if(TmpRoom=="wait")
{
//falls nicht, wird dieses hier ausgeführt
//Es sagt TmpRoom = data, der benutzename ist data
/*Das bedeutet tmpRoom is nicht mehr = wait! Also wird der nächste der hier
joinen will, in die nächste schleife geschickt, die “else” schleife*/
TmpRoom = data;
//Denn das hier kreirt & joint einen raum, der benannt wird nach dem benutzernamen
socket.join(TmpRoom);
//jetzt sendet es you,raumnamen
socket.send("you," + TmpRoom);
//jetzt endet die schleife
}
else
{
//Joins the Temporary Room, to the enemy player
//Joint dem Raum, zum feindlichen mitspieler
socket.join(TmpRoom);
//Denn sendet es den RaumNamen
socket.send("Room," + TmpRoom);
//Und jetzt der interresante part, es sendet die daten nicht nur zu einem client!
//Aber zu allen Clients, zu allen in dem raum TmpRoom
//Die daten die er sendet ist der raum-name
io.sockets.in(TmpRoom).send("enemy," + TmpRoom);
//Und der benutzernamen des anderen mitspielers!
io.sockets.in(TmpRoom).send("enemy," + data);
//Jetzt setzt er TmpRoom = “wait”; sodass der nächste der joint,
//einen neuen raum kreiert.
//Räume werden automatisch Zerstört nachdem alle sie verlassen haben.
TmpRoom = "wait";
}
});
//Falls der socket, eine eigene funktion von C2 kriegt, genannt “Message” mit data(raumname)
//Denn macht es das hier:
socket.on("message", function(data){
//Jetzt sind wir in der schleife, falls der server ein event kriegt genannt chatmessage,
//vermutlich mit einem string, den wird es das hier ausführen:
socket.on("chatmessage", function(data2){
//Sendet eine chat nachricht in den raum
//Es sendet die daten zu allen in dem raum
//Der raum wurde vom client in seiner “message” funktion deklariert mit (data),
io.sockets.in(data).send("chatmessage," + data2);
});
//Das hier ist so ziemlich das gleiche, und braucht vermutlich nicht mehr erklärung
socket.on("GameSettings", function(data2){
//Sendet die Game Settings, x,y koordinaten, String, ALLES!
io.sockets.in(data).send("GameSettings," + data2);
});
});
//Wenn der User disconnected wird das hier ausgeführt:
socket.on("disconnect", function(data){
//Bei disconnecting raum leaven.
socket.leave(data);
});
});
Viel code oder?
Die // sind kommentare, und werden benutzt im notizen zu nehmen an bestimmten stellen.
Ich glaube dies bedarf nicht an weiterer erklärung, du kannst die datei links downloaden(Alles english)
Aber desto mehr Javascript du kannst, desto mehr möglichkeiten hast du.
Dies ist nur ein exempel, und sollte nicht als fertigen server benutzt werden, da es mehrere Bugs enthalten könnte.
Aber du könntest es als vorlage benutzen wie es villeicht sein wird.
Starte Server
Jemals gewundert wie man den Server den startet?
Es existieren mehrere möglichkeiten, ich werde zwei erklären.
1. CMD
Öffne CMD und gebe ein:
cd C:\Dein\Save\Ort\fuer\Deine\js\datei
node deinappname.js
Jetzt hast du den Server gestartet und solltest einen Command fenster sehen.
2. Batch
Erst öffne den Editor, den gebe ein:
node deinappname.js
pause
node deinappname muss dein server app name seien, den du benutzt hast zum abspeichern.
Denn drücke Speichern Als -> Dateiname: Start.bat -> Dateityp: Alle Dateien -> Speichern.
So das wars, jetzt tue die .bat datei in die location wo du deine .js datei hast und starte sie.
Jetzt hast du den Server gestartet und solltest einen Command fenster sehen.
Falls du was in die console hineinschreiben willst, am wichtigen zeitpunkten(spieler hat gejoint),
gebe bei der .js ein:
console.log("string" + "oder" + einevaraible);