Mit unserem Wissen über Web-APIs und JSON wollen wir nun die TicTacToe Web-App weiterentwickeln, so dass zwei Spieler:innen übers Web gegeneinander spielen können.

Dazu muss Folgendes geschehen:

  • Die Spiel-Logik muss vom Browser auf den Server wandern.
    • Dazu muss ein Server-Prozess gestartet werden, wir verwenden dafür nodejs und express.
    • Der Server muss geeignete Web-APIs zur Verfügung stellen:
      • /game/<gameid>: gibt den Zustand des Games mit Id <gameid> im JSON-Format zurück.
      • /join: nimmt an einem Spiel teil (entweder an einem bereits mit einem Spieler wartenden, oder es wird ein neues Spiel gestartet). Gibt anschliessend den Game-Zustand zurück.
      • /set/<gameid>/<cellid>: Setzt im Game mit Id <gameid> die Zelle <cellid> (muss im Bereich von 0-8 sein) an. Gibt anschliessend den Game-Zustand zurück.
  • Das Javascript im Browser muss sich nur noch darum kümmern, die richtigen Web-APIs auf dem Server aufzurufen, und den Zustand des Spiels im HTML darzustellen.

### Installation von node.js und express

  • Node.js installieren:
  • Projekt initialisieren:
    • Eine Eingabeaufforderung im Ordner der Webapp öffnen.
      • npm init
      • npm install express cookie-parser
    • Öffne die Datei package.json:
      • füge einen Eintrag hinzu: "type": "module"
    • Falls du git verwendest:
      • füge node-modules zu .gitignore hinzu. ### App definieren

Zuerst benötigen wir eine Datei app.js, die definiert, wie der Server funktioniert, und welche APIs wir bereitstellen:

app.js
import express from 'express'
 
const app = express()
const port = 3000
 
// Hello World.
app.get('/hello', (req, res) => {
  res.send('Hello World!')
})
 
// Listen on the given port
app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})

Mit dem Kommandozeilenaufruf node app.js wird der Node-Server gestartet. Auf der Adresse http://localhost:3000/hello können wir auf die oben definierte API zugreifen.

  • ksk_ef/web/apps/server.1723371575.txt.gz
  • Zuletzt geändert: 2024-08-11 10:19
  • von hof