npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

packetize-string

v0.0.3

Published

Packetize and rebuild a string. Mostly for TCP communication.

Downloads

211

Readme

packetize-string

Utility for converting arbitrary strings (aka messages) into packets which can be shipped using, eg nodes net functionality then reassembling the packets into messages

Installation

npm install --save packetize-string

How it works (default mode)

The first character in a packet is the header. The first 5 bits of the header are reserved for the "mode" (future enhancements). The next 11 bits of the header are the number of characters in the packet. Long messages are split into multiple packets by the sender and stitched together by the receiver.

Usage

Messages can be packetizes with either the packetize-string.send() function or by using the Sender object. Messages can be extracted with either the listener on the Receiver object or the promise returned by packetize-string.receive(socket)

Sending a message - using the send function (recommended)

"use strict";

var net = require("net");
var Packetizer = require("packetize-string");

var host   = "127.0.0.1";
var port   = 6116;
var client = new net.Socket();
client.connect(port, host, function() {
    client.write(Packetizer.send("Hello World"));
});

.

Sending a message - using the object

"use strict";

var net = require("net");
var Packetizer = require("packetize-string");

var host   = "127.0.0.1";
var port   = 6116;
var sender = new Packetizer.Sender();
var client = new net.Socket();
client.connect(port, host, function() {
    sender.packetize("Hello World");
    sender.packetize("How are you?");
    client.write(sender.packets());
});

.

Receive a message - using a listener (recommended)

If the sender sends multiple messages (like in the "Sending a message - using the object" example above", each message causes it's own event, so the 'on' will fire for each message.

"use strict";

var net = require("net");
var Packetizer = require("packetize-string");

var host = "127.0.0.1";
var port = 6116;

var receiver = new Packetizer.Receiver()
        .on("message", function (msg) {
            console.log("Heard: "+msg);
        })
        .on("error", function (reason) {
            console.log("Got an error: "+reason);
        });

net.createServer(function (socket) {
    console.log("Talking to: " + socket.remoteAddress +":"+ socket.remotePort);
    socket.on("data", function (chunk) { receiver.accumulate(chunk); });
})
.listen(port, host);

.

Receive a message - using a promise (in progress)

If the sender sends multiple messages (like in the "Sending a message - using the object" example above", only the first message is passed on to the success callback. Any other messages will be lost.

"use strict";

var net = require("net");
var Packetizer = require("packetize-string");

var host = "127.0.0.1";
var port = 6116;

net.createServer(function (socket) {
    Packetizer.receive(socket)
        .then(
            function ( msg ) {
                console.log("Heard: "+msg);
            },
            function ( reason ) {
                console.log("Got an error: "+reason);
            }
        );
})
.listen(port, host);

Modes (WIP)

The default mode:

  • The next 11 bits are the number of characters in the packet.
  • If the length is 2047 (0x7F) then there is more of the message in the next packet.
    • If the message is exactly 2046 characters (+1 for header) then an empty packet is sent to end the message.

Some ideas for future modes:

  • conditionally strip the 0x00 from the front of characters if all characters are utf-8
  • Add MD5 as the tail to the packet