{
    "path": "/home/krm/dev/mimer-academia/web/introduction/Sections/client-server.sv.json",
    "s": "Ignor",
    "invert": true,
    "level": 1,
    "title": [
        "Klient-server kommunikation"
    ],
    "author": [
        "krm"
    ],
    "created": {
        "year": 2018,
        "month": 9,
        "day": 30,
        "hour": 0
    },
    "status": "draft",
    "description": [],
    "statments": [],
    "comment": [],
    "cards": [
        {
            "level": 1,
            "title": [
                "# 👁️‍🗨️  Om hur en server kommunicerar med en kleint"
            ],
            "description": [
                "Vi måste förstå hur en server kommunicerar med en klient för att kunna utveckla bra web applikationer."
            ],
            "statments": [
                {
                    "description": [
                        "Det är viktig för att webben ger oss många begräsningar."
                    ]
                },
                {
                    "description": [
                        "Att förstå dessa begräsningar får oss att förstå varför webben är som den är."
                    ]
                },
                {
                    "description": [
                        "Genom att förstå lösningar på dessa problem kan vi skapa bra applikationer."
                    ]
                }
            ],
            "comment": []
        },
        {
            "level": 1,
            "title": [
                "❓ På vilket sätt komuncerar en klient med en server?"
            ],
            "description": [
                "Den modell som används för webben kallas klient server modele(\"Client–server model\")"
            ],
            "statments": [
                {
                    "description": [
                        "Klienten är ett program på din lokala dator"
                    ]
                },
                {
                    "description": [
                        "Från din klient görs ett anrop(\"request\") till servern."
                    ]
                },
                {
                    "description": [
                        "Detta besvara servern med ett svar(\"respons\") till klienten."
                    ]
                },
                {
                    "description": [
                        "Klienten tar emot detta svar."
                    ]
                }
            ],
            "comment": []
        },
        {
            "level": 1,
            "title": [
                "Client server Model"
            ],
            "description": [],
            "statments": [
                {
                    "description": [
                        "🔗 ",
                        [
                            {
                                "link": "https://www.lifewire.com/web-browsers-and-web-servers-communicate-817764"
                            },
                            "Client server model"
                        ]
                    ]
                }
            ],
            "comment": []
        },
        {
            "level": 1,
            "title": [
                "Begräsningar"
            ],
            "description": [
                "Detta innebär att vi har begräsningar"
            ],
            "statments": [
                {
                    "description": [
                        "Server anropar alldrig klienten."
                    ]
                },
                {
                    "description": [
                        "När server har svarat på ett anrop är den klar."
                    ]
                },
                {
                    "description": [
                        "Det innebär att servern \"glömmer bort\" klienten."
                    ]
                },
                {
                    "description": [
                        "Fast i praktiken finns det många lösningar på detta."
                    ]
                }
            ],
            "comment": []
        },
        {
            "level": 1,
            "title": [
                "Anrop(\"request\")"
            ],
            "description": [
                "Klienten anropar servern. I anropen kan det finns mycket information till servern."
            ],
            "statments": [
                {
                    "description": [
                        "Anropen innehåller en URL"
                    ]
                },
                {
                    "description": [
                        "Vilken typ av klient och dator"
                    ]
                },
                {
                    "description": [
                        "Tid när anropet gjordes."
                    ]
                },
                {
                    "description": [
                        "Var någonstans svaret ska skickas."
                    ]
                },
                {
                    "description": [
                        "Vilken kryptering som ska använs"
                    ]
                },
                {
                    "description": [
                        "Data som klienten vill skicka till servern."
                    ]
                }
            ],
            "comment": []
        },
        {
            "level": 1,
            "title": [
                "Svar(\"respons\")"
            ],
            "description": [
                "Server ger ett svar till klienten."
            ],
            "statments": [
                {
                    "description": [
                        "Svaret innehåller en header som ger information om svaret"
                    ]
                },
                {
                    "description": [
                        "Data som server vill skicka till klienten."
                    ]
                }
            ],
            "comment": []
        },
        {
            "level": 1,
            "title": [
                "Stateless"
            ],
            "description": [
                "Stateless betyder att ett protokoll behandlar varje anrop separat."
            ],
            "statments": [
                {
                    "description": [
                        "Detta gör att protokollet inte hjälper servern eller klienten att komma ihåg vad som hänt."
                    ]
                },
                {
                    "description": [
                        "Men det finns finns flera metoder att komma runt de problem som då skapas."
                    ]
                },
                {
                    "description": [
                        "Webbkakor(\"cookies\") är ett sätt att komma runt detta."
                    ]
                },
                {
                    "description": [
                        "En webbkaka sparar nämligen lite data hos klienten."
                    ]
                }
            ],
            "comment": [
                "Kunde tyvärr inte hitta någon bra översättning till svenska."
            ]
        },
        {
            "level": 1,
            "title": [
                "Polling"
            ],
            "description": [
                "Eftersom en server inte kan fråga en klient något blir det problem om servern behöver säga något till klienten."
            ],
            "statments": [
                {
                    "description": [
                        "Ett exempel på detta skulle vara en chatt app."
                    ]
                },
                {
                    "description": [
                        "För om server får besket av en klient att den vill prata med en anna klient."
                    ]
                },
                {
                    "description": [
                        "Hur gör den då?"
                    ]
                },
                {
                    "description": [
                        "En lösning är att alla klienter anropar server ofta, för då kan server svara."
                    ]
                },
                {
                    "description": [
                        "Detta kallas \"polling\""
                    ]
                },
                {
                    "description": [
                        "Det är inget effektivt sätt att komunicera."
                    ]
                }
            ],
            "comment": []
        }
    ],
    "kind": "sections"
}