Этот репозиторий позволяет использовать 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/netcode
go 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.