gtenet
Version:
Node.js bindings for the ENet reliable UDP networking library
144 lines (106 loc) • 3.14 kB
Markdown
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 )
```bash
```
```bash
npm install gtenet
```
or with Bun:
```bash
bun add gtenet
bun pm trust gtenet
```
Start a server:
```bash
node run example/server
bun run example/server
```
In another terminal, start a client:
```bash
node run example/client
bun run example/client
```
```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();
```
```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();
```
This project is licensed under the MIT License. See [LICENSE](LICENSE) for more information.
- 🌐 [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
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)