bun-enet
v0.1.1
Published
Bun wrapper around the ENet library
Maintainers
Readme
bun-enet
bun-enet is a Bun wrapper around the ENet C library
[!NOTE]
The library is currently targeted at Windows only. Support for other platforms will be added in the future.
Install
bun add bun-enetUsage
import { Host, Packet, address, initialize, randomSeed, time } from "bun-enet";
using _ = initialize();
using server = Host.createServer({
address: address("127.0.0.1", 9000),
peers: 32,
channels: 2,
});
using client = Host.createClient({ peers: 1, channels: 2 });
const peer = client.connect(address("127.0.0.1", 9000), { channels: 2 });
const deadline = Date.now() + 2_000;
let clientConnected = false;
while (Date.now() < deadline && !clientConnected) {
using serverEvent = server.service(25);
using clientEvent = client.service(25);
if (clientEvent?.type === 1) {
clientConnected = true;
}
}
if (!clientConnected) {
throw new Error("Timed out waiting for ENet connection");
}
peer.send(0, Packet.fromString("hello"));
client.flush();
while (Date.now() < deadline) {
using event = server.service(25);
if (event?.packet) {
const packet = event.takePacket();
console.log(packet?.text());
packet?.dispose();
break;
}
}
console.log(time(), randomSeed(), client.info, peer.info);API
initialize()initializes ENet once and returns a disposable runtime handle.time(),setTime(), andrandomSeed()expose ENet global timing/random helpers.Host.createServer()andHost.createClient()create ENet hosts.Host#service()returns disposableconnect,disconnect, andreceiveevents.Event#takePacket()transfers ownership of a received packet out of the event.Host#info,Peer#info,Host#throttleBandwidth(),Host#random(), andPeer#configureThrottle()expose additional runtime stats and controls.Peer#send()sends aPacketon a channel.Packet.fromString()andPacket.fromBytes()create packets owned by ENet.
Example
There is a complete client/server example in example/
Licensing
The wrapper is MIT licensed. The published package also includes THIRD_PARTY_LICENSES
for bundled ENet license notices.
