Этот репозиторий позволяет использовать netcode.io через расширения браузера до его принятия в браузерах. netcode.io обеспечивает безопасное использование UDP в веб-браузерах с целью поддержки многопользовательских игр HTML5. Более подробную информацию о netcode.io можно найти здесь.
netcode.io поддерживается в следующих браузерах через расширения:
Поддержка мобильных устройств практически невозможна до тех пор, пока поддержка netcode.io не появится в браузерах изначально, поскольку мобильные платформы не поддерживают расширения или встроенный обмен сообщениями.
Чтобы это работало, требуется установка как расширения браузера, так и встроенного помощника приложения, который осуществляет фактическую связь netcode.io. Расширение использует собственные API-интерфейсы обмена сообщениями, предоставляемые в браузерах, чтобы сделать netcode.io доступным через помощник.
Чтобы опробовать это в своем браузере, сначала создайте помощник netcode.io.host:
go get github.com/wirepair/netcodego build - для текущей ОСenv GOOS=windows GOARCH=amd64 go build — для сборки для Windows (в стиле Linux для установки переменных среды)env GOOS=linux GOARCH=amd64 go build — для сборки для Linux (в стиле Linux для установки переменных среды)env GOOS=darwin GOARCH=amd64 go build — для сборки для Mac (в стиле Linux для установки переменных среды) ./netcode.io.host
Оно должно работать без ошибок и устанавливаться как собственное расширение обмена сообщениями.
После этого добавьте каталог browserwebext как распакованное расширение.
API доступен клиентам Javascript как window.netcode . Проверить доступность netcode.io можно с помощью обычного шаблона if (window.netcode) { ... } .
window.netcode предоставляет одну функцию: createClient(callback) :
Создает новый клиент netcode.io, который можно использовать для безопасной связи UDP с использованием протокола netcode.io. Обратный вызов имеет форму callback(err, client) . Если установлен err , при создании клиента произошла ошибка (и client будет нулевым). В противном случае client установлен, а err равна нулю. Возвращенный клиент является экземпляром Client .
protocol должен быть ipv4 или ipv6 и определяет, к какому типу адреса сервера вы можете подключиться.
Параметры:
protocol : либо ipv4 , либо ipv6 .callback : обратный вызов в форме callback(err, client) , где err — это либо значение null , либо экземпляр Error , а client — это либо значение null , либо экземпляр Client . Проверяет, установлен ли пользователем помощник netcode.io. Обратный вызов имеет форму callback(err, isPresent) , где err — это либо null , либо экземпляр Error . Если ошибок нет, isPresent является логическим значением, указывающим, установлен ли собственный помощник.
Если помощник netcode.io не установлен, вам следует направить пользователя на https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest, где помощник netcode.io можно легко установить в несколько кликов.
Параметры:
callback : обратный вызов в форме callback(err, isPresent) , где err — это либо значение null , либо экземпляр Error , а isPresent — это либо значение null , либо логическое значение. Устанавливает тактовую частоту клиента netcode.io, выражаемую количеством тактов в секунду для приема и отправки пакетов. По умолчанию тикрейт для клиентов равен 60 ; то есть 60 раз в секунду.
Параметры:
tickRate : целое число, равное или больше 1 .callback : обратный вызов в форме callback(err) , где err имеет значение null или экземпляр Error . Подключается к серверу netcode.io, используя указанный токен. token должен быть экземпляром Uint8Array и представлять токен netcode.io, полученный от сервера аутентификации.
Вы не можете использовать netcode.io для отправки пакетов UDP на произвольные IP-адреса; вместо этого у вас должен быть сервер аутентификации, использующий библиотеку netcode.io (или совместимую реализацию), который может генерировать и подписывать токены со списком IP-адресов игровых серверов и закрытым ключом, общим для вашего сервера аутентификации и игровых серверов.
В большинстве распространенных сценариев ваш сервер аутентификации предоставит токен как часть запроса AJAX. Если вы используете систему учетных записей пользователей, вы предоставляете токены после того, как пользователь войдет в вашу игру, причем токен указывает, к какому серверу разрешено подключение клиенту.
Параметры:
token : экземпляр Uint8Array , содержащий данные токена.callback : обратный вызов в форме callback(err) , где err имеет значение null или экземпляр Error . Отправляет пакет на подключенный сервер с использованием packetBuffer в качестве данных. packetBuffer должен быть экземпляром Uint8Array .
Параметры:
token : экземпляр Uint8Array , который содержит данные пакета для отправки.callback : обратный вызов в форме callback(err) , где err имеет значение null или экземпляр Error . Возвращает текущее состояние клиента в виде строки. Возвращенное состояние является одним из: connected , connectionDenied , connectionRequestTimeout , connectionResponseTimeout , connectionTimedOut , connectTokenExpired , disconnected , invalidConnectToken , sendingConnectionRequest , sendingConnectionResponse или destroyed .
Параметры:
callback : обратный вызов в форме callback(err, state) , где err — это либо значение null , либо экземпляр Error . state равно null (в случае ошибки) или одному из состояний, перечисленных выше.Уничтожает клиент, отключая его от сервера и очищая все связанные ресурсы. После уничтожения клиента его нельзя использовать повторно.
Параметры:
callback : обратный вызов в форме callback(err) , где err имеет значение null или экземпляр Error . Добавляет прослушиватель событий к клиенту. В настоящее время единственным поддерживаемым type является receive , который запускается, когда клиент получает пакет от сервера.
Для receive обратный вызов имеет форму callback(clientId, buffer) , где clientId — это идентификатор клиента, первоначально выданный сервером аутентификации, а buffer — это полученный пакет как экземпляр Uint8Array .
Параметры:
type : один из поддерживаемых типов, перечисленных выше.callback : обратный вызов, форма которого различается в зависимости от type . Этот код расширения хоста предоставляется по лицензии MIT.
Основными целями этого проекта на данный момент являются:
Все запросы на включение должны быть доступны по лицензии MIT.