Giter VIP home page Giter VIP logo

lynx-chat's Introduction

Lynx Chat Module

This module adds chat functionality to the lynx framework.

The frontend is implemented as a React application, that can be easily integrated as an iframe. The backend is currently implemented as REST APIs, and the React application perform a polling-like method to update the message list.

Installation and usage

The Chat Module depends on the Lynx Admin UI module to provide a basic automatic administration area.

For installation:

npm install lynx-datagrid lynx-admin-ui lynx-chat

A typical configuration could be:

import AdminUIModule from 'lynx-admin-ui';
import DatagridModule from 'lynx-datagrid';
import { App, ConfigBuilder } from 'lynx-framework';
import ChatModule from '..';

const port = Number(process.env.PORT) || 3000;

let myConfig = new ConfigBuilder(__dirname, false).build();

const app = new App(myConfig, [
    new DatagridModule(),
    new AdminUIModule(),
    new ChatModule(),
]);

app.startServer(port);

Rooms, users and message types

The module supports multiple rooms (or channel). Each room can contain multiple users.

Users can be associated with a standard lynx UserEntity, or they can be guest-user.

To create a new user, it is possible to execute the following code:

//creation of a chat guest user, named 'Boris'
let userA = await ChatUserEntity.createUser('Boris');

//creation of a chat user connected to a lynx standard user
let userB = await ChatUserEntity.createUser(lynxStandardUser);

To create a new room, it is possible to execute the following code:

let room = await ChatRoomEntity.createRoom('Jellyfish', [userA, userB, userC]);

in this example, a new room named 'Jellyfish' is created, formed by three users.

The module supports text messages and file messages. For the latter, each uploaded file will be a Media object, stored inside the /chat/uploads virtual directory.

Integrate the frontend

The frontend is available at the following path:

/chat/app/index.html?room={{roomId}}&id={{chatUserId}}

where roomId specify the id of the room to use; the chatUserId specify the current Chat User Id that sends the message.

IMPORTANT: the frontend should always used inside an iframe or similar and the url should be as masked as possible to the end user. Moreover, to provide security for user access, a middleware should be provided.

Security and validations

The API endpoints are in the /chat/api/ path. You should provide your own middleware to provide security (if needed) on the access of this endpoints.

lynx-chat's People

Contributors

sprechen avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.