sockopt
getsockopt
& setsockopt
for Node.js sockets.
Allows you to set all the socket flags that Node does not expose via its built-in UDP & TCP socket APIs.
Installation
npm install sockopt
Usage
const {createSocket} = require('dgram')
const {getsockopt, setsockopt} = require('sockopt')
// https://github.com/apple/darwin-xnu/blob/a449c6a3b8014d9406c2ddbdc81795da24aa7443/bsd/sys/socket.h#L165
const SO_SNDBUF = 0x1001
const socket = createSocket({type: 'udp4'})
socket.bind(() => {
console.log('SO_SNDBUF is', getsockopt(socket, SOL_SOCKET, SO_SNDBUF))
setsockopt(socket, SOL_SOCKET, SO_SNDBUF, 1024)
console.log('SO_SNDBUF is now', getsockopt(socket, SOL_SOCKET, SO_SNDBUF))
})
SO_SNDBUF is 9216
SO_SNDBUF is now 1024
ceveat: integer-based flags only
Note: Currently, this package only supports read & writing the flags via integers.
Set boolean flags (SO_BROADCAST
) via 0
(disabled) and 1
(enabled), or +false
and +true
to be more explicit. Due to how the getsockopt
syscall works, 0
will be returned for "disabled", and non-0
for "enabled".
Struct-based flags (e.g. SO_SNDTIMEO
) do not work yet.
Related
-
Linux
sys/socket.h
with common Linux socket flags. -
Darwin
sys/socket.h
with all macOS socket flags. - Node.js discussion about exposing
setsockopt
-
node-getsockopt
– An older implementation, does not use N-API but the v8 API directly. -
setsockopt
– An older implementation with Windows support.
Contributing
If you have a question or need support using sockopt
, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, use the issues page.