Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

WebSocketPeer

Inherits: PacketPeer < RefCounted < Object

WebSocket 连接。

Description

这个类代表 WebSocket 连接,可以用作 WebSocket 客户端(兼容 RFC 6455),也可以用作 WebSocket 服务器的远程对等体。

发送 WebSocket 二进制帧请使用 PacketPeer.put_packet,发送 WebSocket 文本帧请使用 send(与基于文本的 API 交互时请优先选择文本帧)。可以通过 was_string_packet 检查最近一个数据包的帧类型。

开启 WebSocket 客户端的方法是:首先调用 connect_to_url,然后定期调用 poll(例如在 Node 的处理过程中)。查询套接字的状态请使用 get_ready_state,获取挂起的数据包数量请使用 PacketPeer.get_available_packet_count,获取挂起的数据包请使用 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("数据包:", socket.get_packet())
    elif state == WebSocketPeer.STATE_CLOSING:
        # 继续轮询才能正确关闭。
        pass
    elif state == WebSocketPeer.STATE_CLOSED:
        var code = socket.get_close_code()
        var reason = socket.get_close_reason()
        print("WebSocket 已关闭,代码:%d,原因 %s。干净得体:%s" % [code, reason, code != -1])
        set_process(false) # 停止处理。

如果要作为 WebSocket 服务器的对等体使用,请参考 accept_stream 及在线教程。

Properties

PackedStringArray

handshake_headers

PackedStringArray()

int

inbound_buffer_size

65535

int

max_queued_packets

2048

int

outbound_buffer_size

65535

PackedStringArray

supported_protocols

PackedStringArray()

Methods

Error

accept_stream ( StreamPeer stream )

void

close ( int code=1000, String reason="" )

Error

connect_to_url ( String url, TLSOptions tls_client_options=null )

int

get_close_code ( ) const

String

get_close_reason ( ) const

String

get_connected_host ( ) const

int

get_connected_port ( ) const

int

get_current_outbound_buffered_amount ( ) const

State

get_ready_state ( ) const

String

get_requested_url ( ) const

String

get_selected_protocol ( ) const

void

poll ( )

Error

send ( PackedByteArray message, WriteMode write_mode=1 )

Error

send_text ( String message )

void

set_no_delay ( bool enabled )

bool

was_string_packet ( ) const


Enumerations

enum WriteMode:

WriteMode WRITE_MODE_TEXT = 0

指定 WebSockets 消息应作为文本有效载荷传输(只允许有效的 UTF-8)。

WriteMode WRITE_MODE_BINARY = 1

指定 WebSockets 消息应以二进制有效载荷的形式传输(允许任何字节组合)。


enum State:

State STATE_CONNECTING = 0

已创建套接字。连接尚未打开。

State STATE_OPEN = 1

连接已打开,通讯就绪。

State STATE_CLOSING = 2

连接正在关闭过程中。这意味着已经向远程对等体发送了关闭请求,但还没有收到确认。

State STATE_CLOSED = 3

连接已关闭或无法打开。


Property Descriptions

PackedStringArray handshake_headers = PackedStringArray()

  • void