50 lines
844 B
Go
50 lines
844 B
Go
package server
|
|
|
|
import (
|
|
"log"
|
|
"math/rand"
|
|
|
|
"github.com/gorilla/websocket"
|
|
)
|
|
|
|
type chessGame struct {
|
|
id int
|
|
}
|
|
|
|
func NewChessGame() *chessGame {
|
|
var game chessGame = chessGame{
|
|
id: rand.Int(),
|
|
}
|
|
|
|
return &game
|
|
}
|
|
|
|
func (game *chessGame) handle(conn *websocket.Conn) {
|
|
for {
|
|
messageType, receivedMessage, err := conn.ReadMessage()
|
|
if err != nil {
|
|
log.Println("Error during message reading:", err)
|
|
break
|
|
}
|
|
|
|
move, err := parseMove(string(receivedMessage))
|
|
if err != nil {
|
|
log.Println("Game: ", game.id, err)
|
|
return
|
|
}
|
|
|
|
log.Println("Game ", game.id, " move: ", move)
|
|
|
|
messageToBeSent := moveToString(*move)
|
|
log.Println("About to send: ", messageToBeSent)
|
|
|
|
err = conn.WriteMessage(messageType, []byte(messageToBeSent))
|
|
if err != nil {
|
|
log.Println("Error during message writing:", err)
|
|
break
|
|
}
|
|
|
|
}
|
|
|
|
}
|