1st working version of node example
This commit is contained in:
41
examples/node/libzt.js
Normal file
41
examples/node/libzt.js
Normal file
@@ -0,0 +1,41 @@
|
||||
var nbind = require('@mcesystems/nbind')
|
||||
var ZeroTier = nbind.init().lib.ZeroTier
|
||||
|
||||
// Start ZeroTier service
|
||||
ZeroTier.start(".zerotier", 9994);
|
||||
|
||||
// Join virtual network
|
||||
ZeroTier.join("8056c2e21c000001");
|
||||
|
||||
// Open the socket
|
||||
let fd = ZeroTier.connectStream("29.49.7.203", 4444);
|
||||
|
||||
// Send some data
|
||||
ZeroTier.send(fd, Buffer.from("Name?\n", 'utf8'), 0)
|
||||
|
||||
// Set blocking read mode
|
||||
// ZeroTier.fcntlSetBlocking(fd, true);
|
||||
let heartbeat = setInterval(() => process.stderr.write('.'), 100)
|
||||
|
||||
// Receive some data
|
||||
const _read = () => {
|
||||
const buf = Buffer.alloc(32)
|
||||
let bytes = -1
|
||||
do {
|
||||
bytes = ZeroTier.recv(fd, buf, 0)
|
||||
if (bytes > 0) { process.stdout.write(buf.toString('utf8')) }
|
||||
} while (bytes > 0);
|
||||
|
||||
if (!ZeroTier.getMyNode().online || buf.toString('utf8').includes("exit")) {
|
||||
// Close the socket
|
||||
ZeroTier.close(fd)
|
||||
// Stop ZeroTier service
|
||||
ZeroTier.stop()
|
||||
// Clear the interval
|
||||
clearInterval(heartbeat)
|
||||
} else {
|
||||
setTimeout(_read, 500)
|
||||
}
|
||||
}
|
||||
_read()
|
||||
|
||||
Reference in New Issue
Block a user