WebSocketPeer
Eredita: PacketPeer < RefCounted < Object
Una connessione WebSocket.
Descrizione
Questa classe rappresenta la connessione WebSocket e può essere utilizzata come client WebSocket (conforme a RFC 6455) o come peer remoto di un server WebSocket.
È possibile inviare frame binari WebSocket utilizzando PacketPeer.put_packet(), e frame di testo per WebSocket utilizzando send() (preferisci i frame di testo quando si interagisce con API basata su testo). È possibile controllare il tipo di frame dell'ultimo pacchetto tramite was_string_packet().
Per avviare un client WebSocket, chiama prima connect_to_url(), poi chiama regolarmente poll() (ad esempio durante il processo Node). È possibile richiedere lo stato del socket via get_ready_state(), ottenere il numero di pacchetti in sospeso tramite PacketPeer.get_available_packet_count(), e recuperarli via PacketPeer.get_packet().
extends Node
var socket = WebSocketPeer.new()
func _ready():
socket.connect_to_url("wss://example.com")
func _process(delta):
socket.poll()
var state = socket.get_ready_state()
if state == WebSocketPeer.STATE_OPEN:
while socket.get_available_packet_count():
print("Packet: ", socket.get_packet())
elif state == WebSocketPeer.STATE_CLOSING:
# Keep polling to achieve proper close.
pass
elif state == WebSocketPeer.STATE_CLOSED:
var code = socket.get_close_code()
var reason = socket.get_close_reason()
print("WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1])
set_process(false) # Stop processing.
Per utilizzare il peer come parte di un server di WebSocket fai riferimento a accept_stream() e al tutorial online.
Proprietà
|
||
|
||
|
||
|
||
|
||
|
Metodi
accept_stream(stream: StreamPeer) |
|
void |
|
connect_to_url(url: String, tls_client_options: TLSOptions = null) |
|
get_close_code() const |
|
get_close_reason() const |
|
get_connected_host() const |
|
get_connected_port() const |
|
get_ready_state() const |
|
get_requested_url() const |
|
get_selected_protocol() const |
|
void |
poll() |
send(message: PackedByteArray, write_mode: WriteMode = 1) |
|
void |
set_no_delay(enabled: bool) |
was_string_packet() const |
Enumerazioni
enum WriteMode: 🔗
WriteMode WRITE_MODE_TEXT = 0
Specifica che i messaggi di WebSocket devono essere trasferiti sotto forma di testo (è consentito solo UTF-8 valido).
WriteMode WRITE_MODE_BINARY = 1
Specifica che i messaggi di WebSocket devono essere trasferiti sotto forma binaria (è consentita qualsiasi combinazione di byte).
enum State: 🔗
State STATE_CONNECTING = 0
Il socket è stato creato. La connessione non è ancora aperta.
State STATE_OPEN = 1
La connessione è aperta e pronta a comunicare.
State STATE_CLOSING = 2
La connessione è in fase di chiusura. Ciò significa che una richiesta di chiusura è stata inviata al peer remoto ma la conferma non è stata ricevuta.
State STATE_CLOSED = 3
La connessione è chiusa o non può essere aperta.
Descrizioni delle proprietà
PackedStringArray handshake_headers = PackedStringArray() 🔗
void set_handshake_headers(value: PackedStringArray)
PackedStringArray get_handshake_headers()
Le intestazioni HTTP aggiuntive da inviare durante l'handshake WebSocket.
Nota: Non supportato nelle esportazioni per Web a causa delle restrizioni dei browser.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedStringArray for more details.
float heartbeat_interval = 0.0 🔗
L'intervallo (in secondi) in cui il peer invierà automaticamente frame di controllo "ping" WebSocket. Se impostato su 0, non verrà inviato alcun frame di controllo "ping".
Nota: Non ha alcun effetto nelle esportazioni Web a causa delle restrizioni dei browser.
int inbound_buffer_size = 65535 🔗
La dimensione del buffer di input in byte (più o menu la quantità massima di memoria che verrà allocata per i pacchetti in entrata).
int max_queued_packets = 4096 🔗
La quantità massima di pacchetti che saranno ammessi nelle code di attesa (sia in entrata sia in uscita).
int outbound_buffer_size = 65535 🔗
La dimensione del buffer di input in byte (più o meno la quantità massima di memoria che verrà allocata per i pacchetti in uscita).
PackedStringArray supported_protocols = PackedStringArray() 🔗
void set_supported_protocols(value: PackedStringArray)
PackedStringArray get_supported_protocols()
I sotto-protocolli di WebSocket consentiti durante l'handshake di WebSocket.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedStringArray for more details.
Descrizioni dei metodi
Error accept_stream(stream: StreamPeer) 🔗
Accetta una connessione di peer eseguendo l'handshake HTTP come server WebSocket. Il stream deve essere un flusso TCP valido recuperato tramite TCPServer.take_connection(), o un flusso TLS accettato tramite StreamPeerTLS.accept_stream().
Nota: Non supportato nelle esportazioni per Web a causa delle restrizioni dei browser.
void close(code: int = 1000, reason: String = "") 🔗
Chiude questa connessione WebSocket. code è il codice di stato per la chiusura (vedi RFC 6455 sezione 7.4 per un elenco di codici di stato validi). reason è la ragione leggibile in chiaro per chiudere la connessione (può essere qualsiasi stringa UTF-8 che è più piccola di 123 byte). Se code è negativo, la connessione sarà chiusa immediatamente senza avvisare il peer remoto.
Nota: Per garantire una chiusura pulita, è necessario mantenere il polling fino a quando STATE_CLOSED è raggiunto.
Nota: L'esportazione sul Web potrebbe non supportare tutti i codici di stato. Si prega di fare riferimento alla documentazione specifica del browser per ulteriori dettagli.
Error connect_to_url(url: String, tls_client_options: TLSOptions = null) 🔗
Si collega all'URL indicato. I certificati TLS saranno verificati contro il nome host durante la connessione utilizzando il protocollo wss://. È possibile passare il parametro opzionale tls_client_options per personalizzare le autorità di certificazione attendibili, o disabilitare la verifica dei nomi comuni. Vedi TLSOptions.client() e TLSOptions.client_unsafe().
Nota: Questo metodo non è bloccante e restituirà @GlobalScope.OK prima che la connessione venga stabilita, a patto che i parametri forniti siano validi e il peer non si trovi in uno stato non valido (ad esempio, già connesso). Chiama regolarmente poll() (ad esempio, durante il processo di un Node) e controlla il risultato di get_ready_state() per sapere se la connessione riesce o fallisce.
Nota: Per evitare avvisi o errori di contenuti misti in Web, potresti dover usare un url che inizia con wss:// (sicuro) invece di ws://. In questo modo, assicurati di utilizzare il nome di dominio completamente qualificato che corrisponde a quello definito nel certificato TLS del server. Non collegare direttamente tramite l'indirizzo IP per le connessioni wss://, in quanto non corrisponde al certificato TLS.
Restituisce il codice di stato del frame di WebSocket, o -1 quando la connessione non è stata chiusa in maniera pulito. Chiama solo questo metodo quando get_ready_state() restituisce STATE_CLOSED.
String get_close_reason() const 🔗
Restituisce la stringa che rappresenta il motivo di stato di chiusura del frame WebSocket ricevuta. Chiama solo questo metodo quando get_ready_state() restituisce STATE_CLOSED.
String get_connected_host() const 🔗
Restituisce l'indirizzo IP del peer connesso.
Nota: Non disponibile nell'esportazione per Web.
int get_connected_port() const 🔗
Restituisce la porta remota del peer connesso.
Nota: Non disponibile nell'esportazione per Web.
int get_current_outbound_buffered_amount() const 🔗
Restituisce la quantità attuale dei dati nel buffer di websocket in uscita. Nota: Le esportazioni Web utilizzano WebSocket.bufferedAmount, mentre altre piattaforme utilizzano un buffer interno.
State get_ready_state() const 🔗
Restituisce lo stato di disponibilità della connessione.
String get_requested_url() const 🔗
Restituisce l'URL richiesto da questo peer. L'URL deriva dal url passato a connect_to_url() o dalle intestazioni HTTP quando agisce come server (ossia quando si utilizza accept_stream()).
String get_selected_protocol() const 🔗
Restituisce il sotto-protocollo WebSocket selezionato per questa connessione o una stringa vuota se il sotto-protocollo non è stato ancora selezionato.
void poll() 🔗
Aggiorna lo stato di connessione e riceve i pacchetti in arrivo. Chiama questa funzione regolarmente per mantenerla in uno stato pulito.
Error send(message: PackedByteArray, write_mode: WriteMode = 1) 🔗
Invia il messaggio message utilizzando la modalità di scrittura desiderata (write_mode). Quando si invia una String, preferisci usare send_text().
Error send_text(message: String) 🔗
Invia il messaggio message utilizzando la modalità di testo WebSocket. Preferisci questo metodo piuttosto che PacketPeer.put_packet() quando interagisci con API basata su testo di terze parti (ad esempio quando si utilizzano messaggi formattati in JSON).
void set_no_delay(enabled: bool) 🔗
Disattiva l'algoritmo di Nagle sul socket TCP sottostante (predefinito). Vedi StreamPeerTCP.set_no_delay() per ulteriori informazioni.
Nota: Non disponibile nell'esportazione per Web.
bool was_string_packet() const 🔗
Restituisce true se l'ultimo pacchetto ricevuto è stato inviato come un payload di testo. Vedi WriteMode.