UNPKG

gtenet

Version:

Node.js bindings for the ENet reliable UDP networking library

144 lines (106 loc) 3.14 kB
# 🌐 GTEnet A high-performance Node.js binding for the ENet reliable UDP networking library. Built specifically for Growtopia private server development with modern JavaScript APIs. 🚀 > [!WARNING] > This project is in early development. Expect breaking changes and limited features. Use at your own risk! > Tested on: > > - Linux ( Arch Linux ) > - Windows ( MSVC & MSYS2 ) > - MacOS ( Soon ) ## 📋 Requirements ```bash # Node.js 18.x # Python 3.1x ``` ## 📦 Installation ```bash npm install gtenet ``` or with Bun: ```bash bun add gtenet # you might get message blocked postinstall, you can run it manually bun pm trust gtenet ``` ## 🚀 Quick Start ### Running the Examples Start a server: ```bash node run example/server # or bun run example/server ``` In another terminal, start a client: ```bash node run example/client # or bun run example/client ``` ## 📖 Basic Usage ### 🖥️ Server Example ```javascript import { Server } from 'gtenet'; // Create a server with automatic port checking const server = await Server.create({ ip: '127.0.0.1', // Server IP address port: 17091, // Server port maxPeer: 32, // Maximum connected clients }); // Set up event handlers with chaining server .on('connect', event => { console.log('🎉 Client connected:', event.peer); }) .on('disconnect', event => { console.log('👋 Client disconnected:', event.peer); }) .on('receive', event => { console.log('📨 Received:', event.data.toString()); // Echo the message back server.send(event.peer, 0, `Echo: ${event.data.toString()}`); }) .on('error', err => { console.error('❌ Server error:', err.message); }); // Start listening for connections await server.listen(); ``` ### 💻 Client Example ```javascript import { Client } from 'gtenet'; // Create a client const client = new Client({ ip: '127.0.0.1', // Server IP port: 17091, // Server port }); // Set up event handlers client .on('connect', event => { console.log('🔗 Connected to server!'); client.send(0, 'Hello Server! 👋'); }) .on('disconnect', event => { console.log('💔 Disconnected from server'); }) .on('receive', event => { console.log('📩 Server says:', event.data.toString()); }) .on('error', err => { console.error('❌ Client error:', err.message); }); // @note connect and start event loop await client.connect(); ``` ## 📄 License This project is licensed under the MIT License. See [LICENSE](LICENSE) for more information. ## 🙏 Acknowledgements - 🌐 [ENet](https://github.com/eikarna/enet) - ENet reliable UDP networking library - ⚙️ [Node-Addon-API](https://github.com/nodejs/node-addon-api) - Node.js addon API for native modules - 🌱 [growtopia.js](https://github.com/StileDevs/growtopia.js) - High-performance Growtopia private server framework ## �📢 Special Thanks Thanks to these people - [@lsalzman](https://github.com/lsalzman) - [@ZtzTopia](https://github.com/ZtzTopia) - [@eikarna](https://github.com/eikarna) - [@StileDevs](https://github.com/StileDevs) - [@JadlionHD](https://github.com/JadlionHD)