PERINGATAN: Ini adalah kode versi alfa dan tidak boleh digunakan untuk penggunaan produksi.
Pustaka ekstensi untuk Haxe untuk menyederhanakan pengaturan koneksi klien/server. Ini memiliki dukungan untuk hal-hal berikut:
Ada dua lapisan transport yang didukung, TCP dan UDP, yang digunakan hxnet. TCP biasanya digunakan untuk layanan yang dapat diandalkan seperti HTTP, FTP, Telnet, dan banyak lainnya. UDP tidak memiliki koneksi dan digunakan untuk data cepat yang tidak dapat diandalkan yang berguna untuk game.
Di atas lapisan transport terdapat kelas Klien dan Server. Ini menangani koneksi sederhana, transmisi/pengambilan data, dan pengecualian. Kelas UDP memalsukan koneksi berdasarkan data yang diterima dari alamat ip berbeda dan nilai batas waktu untuk menentukan kapan koneksi terputus.
Saat membuat objek Klien atau Server, Anda harus meneruskan Protokol ke objek tersebut. Protokol mendefinisikan interaksi spesifik antara klien dan server. Misalnya, Anda dapat membuat protokol berbasis RPC khusus yang dengan mudah memanggil fungsi di server dari klien (atau sebaliknya). Contoh protokol lainnya adalah HTTP yang dapat menghasilkan balasan dari server ke browser.
Katakanlah Anda ingin membuat server gema telnet dasar. Kita dapat melakukannya dengan memperluas protokol Telnet dan mengganti fungsi lineReceived
.
class Echo extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
writeLine ( line );
}
static public function main ()
{
var server = new hxnet.tcp. Server ( new hxnet.base. Factory ( Echo ), 4000 );
server . start ();
}
}
Fungsi utama membuat instance server TCP (port 4000) dan menggunakan kelas Pabrik dasar untuk membuat instance Echo baru untuk setiap koneksi klien. Kemudian ia memanggil start
yang merupakan jalan pintas untuk mendengarkan port dan memperbarui tanpa batas.
Anda mungkin ingin terhubung ke server untuk mengambil data. Secara default hxnet memblokir semua koneksi yang dapat menjadi masalah dengan aplikasi gui karena akan mengunci rendering. Kita dapat memperbaikinya dengan menyetel blocking
ke false.
class Client extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
trace ( line );
}
static public function main ()
{
var client = new hxnet.tcp. Client ();
client . protocol = new Client (); // set the protocol we want to use
client . connect ( " localhost " , 4000 );
client . blocking = false ; // important for gui clients
while ( true )
{
client . update ();
// add application logic here
}
}
}
Hak Cipta (C) 2013-2014 Matt Tuttle
Izin dengan ini diberikan, secara gratis, kepada siapa pun yang memperoleh salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menggunakan Perangkat Lunak tanpa batasan, termasuk namun tidak terbatas pada hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , mempublikasikan, mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak, dan mengizinkan orang yang menerima Perangkat Lunak untuk melakukan hal tersebut, dengan tunduk pada ketentuan berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan disertakan dalam semua salinan atau sebagian besar Perangkat Lunak.
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN KELAYAKAN UNTUK DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN TIDAK ADA PELANGGARAN. DALAM KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAINNYA, BAIK DALAM TINDAKAN KONTRAK, HUKUM ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU PENGGUNAAN ATAU HAL-HAL LAIN DALAM PERANGKAT LUNAK.