Repositori ini memungkinkan penggunaan netcode.io melalui ekstensi browser, sebelum diadopsi di browser. netcode.io memungkinkan penggunaan UDP secara aman di browser web untuk tujuan mendukung game HTML5 multipemain. Informasi lebih lanjut tentang netcode.io dapat ditemukan di sini.
netcode.io didukung di browser berikut melalui ekstensi:
Dukungan perangkat seluler pada dasarnya tidak mungkin dilakukan sampai dukungan netcode.io muncul di browser secara asli, karena platform seluler tidak mendukung ekstensi atau perpesanan asli.
Agar ini berfungsi, diperlukan instalasi ekstensi browser dan aplikasi pembantu asli yang melakukan komunikasi netcode.io yang sebenarnya. Ekstensi ini menggunakan API perpesanan asli yang disediakan di browser untuk membuat netcode.io tersedia melalui helper.
Untuk mencobanya di browser Anda, pertama-tama buatlah helper netcode.io.host:
go get github.com/wirepair/netcode
go build
- untuk OS saat inienv GOOS=windows GOARCH=amd64 go build
- untuk membangun untuk Windows (gaya linux untuk mengatur variabel lingkungan)env GOOS=linux GOARCH=amd64 go build
- untuk membangun untuk Linux (gaya linux untuk mengatur variabel lingkungan)env GOOS=darwin GOARCH=amd64 go build
- untuk membangun untuk Mac (gaya Linux untuk mengatur variabel lingkungan) ./netcode.io.host
Ini seharusnya berjalan tanpa kesalahan, dan menginstal dirinya sendiri sebagai ekstensi perpesanan asli.
Setelah ini selesai, tambahkan direktori browserwebext
sebagai ekstensi yang belum dibongkar.
API tersedia untuk klien Javascript sebagai window.netcode
. Anda dapat memeriksa ketersediaan netcode.io menggunakan pola konvensional if (window.netcode) { ... }
.
window.netcode
menyediakan satu fungsi: createClient(callback)
:
Membuat klien netcode.io baru yang dapat digunakan untuk komunikasi UDP aman menggunakan protokol netcode.io. Panggilan baliknya berbentuk callback(err, client)
. Jika err
disetel, terjadi kesalahan saat membuat klien (dan client
akan menjadi nol). Kalau tidak, client
disetel dan err
adalah nol. Klien yang dikembalikan adalah turunan dari Client
.
protocol
harus berupa ipv4
atau ipv6
dan menentukan jenis alamat server yang dapat Anda sambungkan.
Parameter:
protocol
: Baik ipv4
atau ipv6
.callback
: Panggilan balik dalam bentuk callback(err, client)
dengan err
bernilai null
atau merupakan turunan dari Error
, dan client
bernilai null
atau merupakan turunan dari Client
. Memeriksa apakah helper netcode.io telah diinstal oleh pengguna. Callbacknya berbentuk callback(err, isPresent)
, dengan err
bernilai null
atau turunan dari Error
. Jika tidak ada kesalahan, isPresent
adalah boolean yang menunjukkan apakah helper asli telah diinstal.
Jika helper netcode.io belum diinstal, Anda harus mengarahkan pengguna ke https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest di mana helper netcode.io dapat dengan mudah diinstal di a beberapa klik.
Parameter:
callback
: Panggilan balik dalam bentuk callback(err, isPresent)
dengan err
bernilai null
atau turunan dari Error
, dan isPresent
bernilai null
atau boolean. Menetapkan tingkat tick klien netcode.io, yang dinyatakan sebagai jumlah tick per detik untuk menerima dan mengirim paket. Nilai tick untuk klien defaultnya adalah 60
; yaitu 60 kali per detik.
Parameter:
tickRate
: Bilangan bulat yang sama dengan atau lebih besar dari 1
.callback
: Panggilan balik dalam bentuk callback(err)
dengan err
bernilai null
atau turunan dari Error
. Terhubung ke server netcode.io menggunakan token yang ditentukan. token
harus berupa turunan Uint8Array
dan mewakili token netcode.io yang diterima dari server autentikasi.
Anda tidak dapat menggunakan netcode.io untuk mengirim paket UDP ke alamat IP sembarang; sebagai gantinya, Anda harus memiliki server autentikasi yang menggunakan pustaka netcode.io (atau implementasi yang kompatibel) yang dapat menghasilkan dan menandatangani token dengan daftar alamat IP server game dan kunci pribadi yang dibagikan antara server autentikasi dan server game Anda.
Dalam skenario paling umum, server autentikasi Anda akan menyediakan token sebagai bagian dari permintaan AJAX. Jika Anda menggunakan sistem akun pengguna, Anda akan memberikan token setelah pengguna masuk ke game Anda, dengan token yang menunjukkan server mana yang diizinkan untuk dihubungkan oleh klien.
Parameter:
token
: Sebuah instance Uint8Array
yang berisi data token.callback
: Panggilan balik dalam bentuk callback(err)
dengan err
bernilai null
atau turunan dari Error
. Mengirim paket ke server yang terhubung dengan packetBuffer
sebagai datanya. packetBuffer
harus berupa turunan dari Uint8Array
.
Parameter:
token
: Sebuah instance Uint8Array
yang berisi data paket yang akan dikirim.callback
: Panggilan balik dalam bentuk callback(err)
dengan err
bernilai null
atau turunan dari Error
. Mengembalikan status klien saat ini sebagai string. Status yang dikembalikan adalah salah satu dari: connected
, connectionDenied
, connectionRequestTimeout
, connectionResponseTimeout
, connectionTimedOut
, connectTokenExpired
, disconnected
, invalidConnectToken
, sendingConnectionRequest
, sendingConnectionResponse
atau destroyed
.
Parameter:
callback
: Panggilan balik dalam bentuk callback(err, state)
dengan err
bernilai null
atau turunan dari Error
. state
adalah null
(jika terjadi kesalahan) atau salah satu status yang tercantum di atas.Hancurkan klien, putuskan sambungannya dari server dan bersihkan semua sumber daya terkait. Setelah klien dihancurkan, klien tidak dapat digunakan kembali.
Parameter:
callback
: Panggilan balik dalam bentuk callback(err)
dengan err
bernilai null
atau turunan dari Error
. Menambahkan pendengar acara ke klien. Saat ini satu-satunya type
yang didukung adalah receive
, yang diaktifkan ketika klien menerima paket dari server.
Untuk receive
panggilan balik dalam bentuk callback(clientId, buffer)
di mana clientId
adalah pengidentifikasi klien yang awalnya dikeluarkan oleh server otentikasi dan buffer
adalah paket yang diterima sebagai turunan dari Uint8Array
.
Parameter:
type
: Salah satu tipe yang didukung yang tercantum di atas.callback
: Panggilan balik yang bentuknya berbeda berdasarkan type
. Kode ekstensi host ini disediakan di bawah lisensi MIT.
Tujuan utama proyek ini saat ini adalah:
Semua permintaan penarikan harus tersedia di bawah lisensi MIT.