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 🙏

© 2024 – Pkg Stats / Ryan Hefner

chat2

v1.2.5

Published

A simple telnet app to chat with a server, using send and expect

Downloads

26

Readme

chat2

A simple telnet app to chat with a server. It uses send and expect to chat and wait for an expected response. There is also an exec method to send and expect in sequence.

This module allows you to chat programatically to any server such as a POP3 server or an SMTP server that uses a known protocol that can be sent to and expected. It uses native Promises and is pipeline safe: you can send and expect from multiple async calls and the data will arrive back in the right order.

Install

npm install chat2

Example


static Chat2 = require('chat2');

static chat = new Chat2('localhost', 110, 5000);
chat.connect()
.then(() => {
  chat.expect(/^\+OK/);
})
.then(() => {
  chat.send('USER cliff');
  chat.exec('PASS password', /^+OK/);
})
.then(response => {
  console.log(response);
  chat.send('QUIT');
  chat.close()
})

Constructor

const chat2 = new Chat2(host, port, timeout);

host

hostname or IP address

port

a numeric port, defaulting to 23 if not provided

####timeout

a timeout in milliseconds, defaulting to no timeout

Methods

connect

chat2.connect();

This sets up the connection to the server, sets encoding to utf-8 and sets a keepalive. It mus be called before any other methods.

expect

chat2.expect(<pattern>)
.then(line => {
  console.log("Received: " + line);
});

Called with a regular expression, it returns a promise. The promise resolves when the regular expression is matched, returning the full line that matched.

send

chat2.send(<message>)
.then(() => {
});

Sends a message to the server, returning a promise. The promise resolves with the message sent.

exec

chat2.exec(<message>, <pattern>)
.then(line => {
  console.log("Received: " + line);
});

This calls send followed by expect. It returns a promise which is resolved to the first line that matches the pattern.

Both expect and exec will reject the promise if the timeout is reached. The caught error will be of type ETIMEDOUT.

close

chat2.close()

This will close the connection cleanly and leave the chat2 instance ready to be reconnected, if desired.

History

This program is called chat2 as it was inspired by Randal L. Schwartz' Perl 4 program chat2.pl from 1991.

Similar programs

The teletype module is similar but will lose data if it comes in too fast.

Issues

Please let me know of any issues at the Github Issues page.