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

@easy-chat/chat-server

v0.0.3

Published

easy socket chat library for node js applications

Downloads

5

Readme

README.MD This file contains the documentation for the chat-server package in the Easy Chat Library.

@easy-chat/chat-server

This is the documentation for the @easy-chat/chat-server package. It provides functionality for the chat server in the Easy Chat application.

Features

@easy-chat/chat-server implements real-time bidirectional event-based communication. It consists of:

Its main features are:

Reliability

Connections are established even in the presence of:

  • proxies and load balancers.
  • personal firewall and antivirus software.

For this purpose, it relies on socket io, which first establishes connection to the backend server using the best possible transports.

Minimalistic chat implementation support

You do not need to understand the internal structures and operation of websockets and chat systems. All you need to do is call create a room, heck you not need to destroy a room as this is handled intelligently and automatically;

Sample code:

import { EasyChatServer, IsocketConfig } from "@easy-chat/chat-server";
const httpsServer; // your node server instance
const roomStatusInterval = 1000; // logging update interval
const socketConfig: IsocketConfig = {
  pingTimeout: 3000,
  pingInterval: 5000,
  transports: ["websocket"],
  allowUpgrades: false,
};

const allowedOrigins = ["https://yourwhitelistapi.com"];

const easyChat = new EasyChatServer(httpsServer, roomStatusInterval, socketConfig);
easyChat.run(allowedOrigins);

Installation

// with npm
npm install @easy-chat/chat-server

// with yarn
yarn add @easy-chat/chat-server

How to use

The following creates an instance of easyChat.

import { EasyChatServer, IsocketConfig, IchatMsg } from "@easy-chat/chat-server";
const httpsServer; // your node server instance
const roomStatusInterval = 1000; // logging update interval
// the config properties can be optional
const socketConfig: IsocketConfig = {
  pingTimeout: 3000,
  pingInterval: 5000,
  transports: ["websocket"],
  allowUpgrades: false,
};
const easyChat = new EasyChatServer(httpsServer, roomStatusInterval, socketConfig);
easyChat.run();

/**
 * get data from event incase you
 * you want to process it futher,say my be save
 * in database or file*/
easyChat.onlineRoom.on("CHAT_MESSAGE", (message: IchatMsg) => {
  // do stuffs with message here
});

// for full event list see enum ECHATMETHOD
import { ECHATMETHOD } from "@easy-chat/chat-server";

Communication

Communication between you and the server are established throught events Below are all events you can listen to;

Save Message

/**
 * get data from event incase you
 * you want to process it futher,say my be save
 * in database or file*/
easyChat.onlineRoom.on("CHAT_MESSAGE", (message: IchatMsg) => {
  // do stuffs with message here
});

Delete Message

/**
 * get delted message request and id of the message incase you want to remove from database*/
easyChat.onlineRoom.on(
  "DELETE_MESSAGE",
  ({ deleted, id }: { deleted: IchatMsg; id: string }) => {
    // do stuffs here
  }
);

Update Room

/**
 * get update room request*/
import { Chatroom } from "@easy-chat/chat-server";
easyChat.onlineRoom.on(
  "UPDATE_ROOM",
  ({ roomData }: { roomData: Chatroom }) => {
    // do stuffs here
  }
);

Update Peer Status

import { IpeerInfo } from "@easy-chat/chat-server";
/**
 * get update peer request*/
easyChat.onlineRoom.on(
  "PEER_UPDATE",
  ({ peerInfo }: { peerInfo: IpeerInfo }) => {
    // do stuffs here
  }
);

In conjunction with Express

You need to pass the Server to easy-chat, and not the express application function. The rest of the listening is done automatically.

import { EasyChatServer, IsocketConfig } from "@easy-chat/chat-server";
import express from "express";
const app = require("express")();
const httpsServer = require("http").createServer(app);
const roomStatusInterval = 1000; // logging update interval
const socketConfig = {
  pingTimeout: 3000,
  pingInterval: 5000,
  transports: ["websocket"],
  allowUpgrades: false,
};
const easyChat = new EasyChatServer(httpsServer, roomStatusInterval, socketConfig);

Documentation

The source code of the website can be found here. Contributions are welcome!

Sponsors

Become a sponsor and get your logo on our README on Github with a link to your site.

License

MIT