WebRTCMultiplayerPeer

Наследует: MultiplayerPeer < PacketPeer < RefCounted < Object

Простой интерфейс для создания одноранговой ячеистой сети, состоящей из WebRTCPeerConnection, совместимой с MultiplayerAPI.

Описание

Этот класс создает полную сетку WebRTCPeerConnection (одно соединение для каждого пира), которую можно использовать как MultiplayerAPI.multiplayer_peer.

Вы можете добавить каждый WebRTCPeerConnection с помощью add_peer() или удалить их с помощью remove_peer(). Пиры должны быть добавлены в WebRTCPeerConnection.STATE_NEW состоянии, чтобы позволить ему создавать соответствующие каналы. Этот класс не будет создавать предложения или задавать описания, он будет только опрашивать их и уведомлять о подключениях и отключениях.

При создании пира с помощью create_client() или create_server() метод MultiplayerPeer.is_server_relay_supported() вернет true, что позволит обмениваться пирами и ретранслировать пакеты, если поддерживается реализацией MultiplayerAPI.

Примечание: При экспорте в Android убедитесь, что в настройках экспорта Android включено разрешение INTERNET перед экспортом проекта или использованием развертывания в один клик. В противном случае сетевое взаимодействие любого рода будет заблокировано Android.

Методы

Error

add_peer(peer: WebRTCPeerConnection, peer_id: int, unreliable_lifetime: int = 1)

Error

create_client(peer_id: int, channels_config: Array = [])

Error

create_mesh(peer_id: int, channels_config: Array = [])

Error

create_server(channels_config: Array = [])

Dictionary

get_peer(peer_id: int)

Dictionary

get_peers()

bool

has_peer(peer_id: int)

void

remove_peer(peer_id: int)


Описания метода

Error add_peer(peer: WebRTCPeerConnection, peer_id: int, unreliable_lifetime: int = 1) 🔗

Добавьте нового пира в сетку с заданным peer_id. WebRTCPeerConnection должен находиться в состоянии WebRTCPeerConnection.STATE_NEW.

Будут созданы три канала для надежного, ненадежного и упорядоченного транспорта. Значение unreliable_lifetime будет передано в параметр "maxPacketLifetime" при создании ненадежных и упорядоченных каналов (см. WebRTCPeerConnection.create_data_channel()).


Error create_client(peer_id: int, channels_config: Array = []) 🔗

Инициализируйте многопользовательский одноранговый узел как клиент с заданным peer_id (должен быть между 2 и 2147483647). В этом режиме вам следует вызывать add_peer() только один раз и с peer_id из 1. Этот режим включает MultiplayerPeer.is_server_relay_supported(), позволяя верхнему слою MultiplayerAPI выполнять обмен одноранговыми узлами и ретрансляцию пакетов.

Вы можете дополнительно указать массив channels_config TransferMode, который будет использоваться для создания дополнительных каналов (WebRTC поддерживает только один режим передачи на канал).


Error create_mesh(peer_id: int, channels_config: Array = []) 🔗

Инициализируйте многопользовательский узел как сетку (т. е. все узлы подключаются друг к другу) с заданным peer_id (должен быть в диапазоне от 1 до 2147483647).


Error create_server(channels_config: Array = []) 🔗

Инициализируйте многопользовательский одноранговый узел как сервер (с уникальным идентификатором 1). Этот режим включает MultiplayerPeer.is_server_relay_supported(), позволяя верхнему слою MultiplayerAPI выполнять обмен одноранговыми узлами и ретрансляцию пакетов.

Вы можете дополнительно указать массив channels_config TransferMode, который будет использоваться для создания дополнительных каналов (WebRTC поддерживает только один режим передачи на канал).


Dictionary get_peer(peer_id: int) 🔗

Возвращает словарное представление однорангового узла с заданным peer_id с тремя ключами. "connection" содержит WebRTCPeerConnection к этому одноранговому узлу, "channels" — массив из трех WebRTCDataChannel и "connected" — логическое значение, указывающее, подключено ли в данный момент одноранговое соединение (все три канала открыты).


Dictionary get_peers() 🔗

Возвращает словарь, ключами которого являются идентификаторы одноранговых узлов, а значениями — представление одноранговых узлов, как в get_peer().


bool has_peer(peer_id: int) 🔗

Возвращает true, если указанный peer_id находится в карте пиров (хотя он может быть не подключен).


void remove_peer(peer_id: int) 🔗

Удалить пир с заданным peer_id из сетки. Если пир был подключен и для него был отправлен MultiplayerPeer.peer_connected, то будет отправлен MultiplayerPeer.peer_disconnected.