Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τη λειτουργία του πρωτοκόλλου WebSocket και πώς διασφαλίζει μια σταθερή σύνδεση μεταξύ διακομιστή και πελάτη;

sobes.tech AI

Απάντηση από AI

Το WebSocket είναι ένα πρωτόκολλο που παρέχει μια διαρκή διπλής κατεύθυνσης σύνδεση μεταξύ πελάτη και διακομιστή πάνω από το TCP. Σε αντίθεση με το κλασικό HTTP, όπου ο πελάτης ξεκινά αιτήματα, το WebSocket επιτρέπει στον διακομιστή να στέλνει δεδομένα στον πελάτη οποιαδήποτε στιγμή.

Αρχή λειτουργίας:

  1. Ο πελάτης ξεκινά ένα αίτημα HTTP με την κεφαλίδα Upgrade: websocket για να μεταβεί στο πρωτόκολλο WebSocket.
  2. Ο διακομιστής επιβεβαιώνει τη μετάβαση και δημιουργείται μια διαρκής σύνδεση.
  3. Μετά την εγκατάσταση της σύνδεσης, ο πελάτης και ο διακομιστής μπορούν να ανταλλάσσουν μηνύματα σε πραγματικό χρόνο χωρίς την ανάγκη επαναλαμβανόμενων αιτημάτων HTTP.

Αυτό επιτρέπει τη δημιουργία εφαρμογών με χαμηλή καθυστέρηση, όπως chat, παιχνίδια, χρηματοοικονομικά τερματικά.

Παράδειγμα χρήσης WebSocket σε iOS (Swift):

import Foundation

let url = URL(string: "wss://example.com/socket")!
let webSocketTask = URLSession.shared.webSocketTask(with: url)

webSocketTask.resume()

// Αποστολή μηνύματος
let message = URLSessionWebSocketTask.Message.string("Γειά σου διακομιστή!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Σφάλμα αποστολής: \(error)")
    }
}

// Λήψη μηνυμάτων
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Σφάλμα λήψης: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Ληφθέν μήνυμα: \(text)")
            default:
                break
            }
            receive() // συνεχίστε να ακούτε
        }
    }
}

receive()

Έτσι, το WebSocket παρέχει μια αποδοτική και διαρκή σύνδεση για ανταλλαγή δεδομένων σε πραγματικό χρόνο.