WebSocketPeer
Соединение WebSocket с ручным опросом и границами сообщений.
ConnectToUrl запускает handshake, AcceptStream принимает подходящий TCP/TLS-поток. Продолжайте Poll и проверяйте GetReadyState: Error.Ok запуска не означает Open. Читайте пакеты через GetPacket/GetPacketError и различайте текст/байты через WasStringPacket.
Close начинает завершение; опрос продолжают до Closed или срока ожидания. Raw WebSocket не синхронизирует Entity и не является автоматически SceneMultiplayer RPC. Для WSS нужны проверяющие TLS-параметры и подходящий сервер.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
WebSocketPeerКонструктор
public WebSocketPeer();Свойства6
HandshakeHeadersСвойство
public string[] HandshakeHeaders { get; set; }Дополнительные заголовки HTTP будут отправлены во время рукопожатия WebSocket. Примечание: Не поддерживается в интернет-экспорте из-за ограничений браузера.
HeartbeatIntervalСвойство
public double HeartbeatInterval { get; set; }Интервал (в секундах), с которым одноранговый узел будет автоматически отправлять кадры управления WebSocket "ping". Если установлено значение 0, кадры управления "ping" отправляться не будут.
Примечание: Не влияет на экспорт веб-контента из-за ограничений браузера.
InboundBufferSizeСвойство
public int InboundBufferSize { get; set; }Размер входного буфера в байтах (примерно максимальный объем памяти, который будет выделен для входящих пакетов).
MaxQueuedPacketsСвойство
public int MaxQueuedPackets { get; set; }Максимальное количество пакетов, которые будут разрешены в очередях (как входящих, так и исходящих).
OutboundBufferSizeСвойство
public int OutboundBufferSize { get; set; }Размер входного буфера в байтах (примерно максимальный объем памяти, который будет выделен для исходящих пакетов).
SupportedProtocolsСвойство
public string[] SupportedProtocols { get; set; }Список предлагаемых/принимаемых подпротоколов WebSocket. Имя подпротокола не создаёт формат игровых сообщений автоматически.
Методы31
AcceptStreamError
public Error AcceptStream(StreamPeer stream);Начинает серверный WebSocket handshake поверх подходящего уже подключённого потока. Для WSS сначала установите TLS; обычный TCP-поток не включает шифрование.
| Имя | Тип | По умолчанию |
|---|---|---|
stream | StreamPeer | — |
ErrorClosevoid
public void Close(int code = 1000, string reason = "");Начинает закрытие с кодом и причиной. Это не замена последующего Poll до Closed; удаление владельца может прервать handshake закрытия.
| Имя | Тип | По умолчанию |
|---|---|---|
code | int | 1000 |
reason | string | "" |
ConnectToUrlError
public Error ConnectToUrl(string url, TlsOptions tlsClientOptions = null);Начинает WS/WSS-подключение. После Error.Ok продолжайте Poll и ждите Open; для WSS используйте проверяющие TLS-параметры.
| Имя | Тип | По умолчанию |
|---|---|---|
url | string | — |
tlsClientOptions | TlsOptions | null |
ErrorGetCloseCodeint
public int GetCloseCode();Код закрытия, когда он получен. Обрыв или неудачный handshake не обязаны иметь нормальный код 1000; интерпретируйте вместе с состоянием и диагностикой.
intGetCloseReasonstring
public string GetCloseReason();Возвращает полученную строку причины статуса закрытия фрейма WebSocket. Вызывайте этот метод только тогда, когда WebSocketPeer.GetReadyState возвращает WebSocketPeer.State.Closed.
stringGetConnectedHoststring
public string GetConnectedHost();Возвращает IP-адрес подключенного однорангового узла. Примечание: Недоступно в веб-экспорте.
stringGetConnectedPortushort
public ushort GetConnectedPort();Возвращает удаленный порт подключенного однорангового узла. Примечание: Недоступно в веб-экспорте.
ushortGetCurrentOutboundBufferedAmountint
public int GetCurrentOutboundBufferedAmount();Возвращает текущий объем данных в исходящем буфере веб-сокета. Примечание: Веб-экспорт использует WebSocket.bufferedAmount, тогда как другие платформы используют внутренний буфер.
intGetHandshakeHeadersstring[]
public string[] GetHandshakeHeaders();string[]GetHeartbeatIntervaldouble
public double GetHeartbeatInterval();doubleGetInboundBufferSizeint
public int GetInboundBufferSize();intGetMaxQueuedPacketsint
public int GetMaxQueuedPackets();intGetOutboundBufferSizeint
public int GetOutboundBufferSize();intGetReadyStateWebSocketPeer.State
public WebSocketPeer.State GetReadyState();Возвращает состояние готовности соединения.
WebSocketPeer.StateGetRequestedUrlstring
public string GetRequestedUrl();Возвращает URL, запрошенный этим пиром. URL выводится из url, переданного в WebSocketPeer.ConnectToUrl, или из заголовков HTTP при работе в качестве сервера (т. е. при использовании WebSocketPeer.AcceptStream).
stringGetSelectedProtocolstring
public string GetSelectedProtocol();Возвращает выбранный подпротокол WebSocket для данного соединения или пустую строку, если подпротокол еще не выбран.
stringGetSupportedProtocolsstring[]
public string[] GetSupportedProtocols();string[]Pollvoid
public void Poll();Продвигает handshake, входящие данные и закрытие. Продолжайте опрос в Closing, пока не получен Closed или не сработал ваш срок ожидания.
Send2 перегрузки
public Error Send(byte[] message, WebSocketPeer.WriteMode writeMode = WebSocketPeer.WriteMode.Binary);Отправляет байты с выбранным WriteMode. Двоичный формат и текст UTF-8 — разные типы сообщения; формат приложения согласуется отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
message | byte[] | — |
writeMode | WebSocketPeer.WriteMode | WebSocketPeer.WriteMode.Binary |
Errorpublic Error Send(ReadOnlySpan<byte> message, WebSocketPeer.WriteMode writeMode);Отправляет байты с выбранным WriteMode. Двоичный формат и текст UTF-8 — разные типы сообщения; формат приложения согласуется отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
message | ReadOnlySpan<byte> | — |
writeMode | WebSocketPeer.WriteMode | — |
ErrorSendTextError
public Error SendText(string message);Отправляет текстовое сообщение UTF-8 в открытом соединении. Проверяйте Error и прикладной предел в байтах; успешная отправка не подтверждает выполнение действия сервером.
| Имя | Тип | По умолчанию |
|---|---|---|
message | string | — |
ErrorSetHandshakeHeaders2 перегрузки
public void SetHandshakeHeaders(ReadOnlySpan<string> protocols);| Имя | Тип | По умолчанию |
|---|---|---|
protocols | ReadOnlySpan<string> | — |
public void SetHandshakeHeaders(string[] protocols);| Имя | Тип | По умолчанию |
|---|---|---|
protocols | string[] | — |
SetHeartbeatIntervalvoid
public void SetHeartbeatInterval(double interval);| Имя | Тип | По умолчанию |
|---|---|---|
interval | double | — |
SetInboundBufferSizevoid
public void SetInboundBufferSize(int bufferSize);| Имя | Тип | По умолчанию |
|---|---|---|
bufferSize | int | — |
SetMaxQueuedPacketsvoid
public void SetMaxQueuedPackets(int bufferSize);| Имя | Тип | По умолчанию |
|---|---|---|
bufferSize | int | — |
SetNoDelayvoid
public void SetNoDelay(bool enabled);Отключить алгоритм Нейгла на базовом сокете TCP (по умолчанию). Для получения дополнительной информации см. StreamPeerTcp.SetNoDelay.
Примечание: Недоступно в веб-экспорте.
| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetOutboundBufferSizevoid
public void SetOutboundBufferSize(int bufferSize);| Имя | Тип | По умолчанию |
|---|---|---|
bufferSize | int | — |
SetSupportedProtocols2 перегрузки
public void SetSupportedProtocols(ReadOnlySpan<string> protocols);| Имя | Тип | По умолчанию |
|---|---|---|
protocols | ReadOnlySpan<string> | — |
public void SetSupportedProtocols(string[] protocols);| Имя | Тип | По умолчанию |
|---|---|---|
protocols | string[] | — |
WasStringPacketbool
public bool WasStringPacket();Отражает тип последнего полученного пакета. Проверяйте после GetPacket; не используйте как характеристику всех будущих сообщений соединения.
boolWebSocketPeer.State
| Значение | Описание |
|---|---|
Closed = 3 | Соединение закрыто или не может быть открыто. |
Closing = 2 | Соединение находится в процессе закрытия. Это означает, что удаленному пиру был отправлен запрос на закрытие, но подтверждение не получено. |
Connecting = 0 | Сокет создан. Соединение еще не открыто. |
Open = 1 | Соединение открыто и готово к коммуникации. Что-то закрывается |
WebSocketPeer.WriteMode
| Значение | Описание |
|---|---|
Binary = 1 | Указывает, что сообщения WebSockets должны передаваться как двоичные данные (допускается любая комбинация байтов). |
Text = 0 | Указывает, что сообщения WebSockets должны передаваться в виде текстовой полезной нагрузки (разрешена только допустимая кодировка UTF-8). |