Chat module ESS
npm install @icapps/chat-astrumModule to create custom chat setup
This module allows to have conversations with one or more recipients into a chat. Socket.io is being used for realtime messages.
Install via npm
``shell`
npm install @icapps/chat-astrum
or via yarn
`shell`
yarn add @icapps/chat-astrum
`javascript`
const chat = require('@icapps/chat-astrum');
`javascript`
import * as chat from '@icapps/chat-astrum';
The module uses a MongoDB database combined with mongoose. In order to run everything smoothly you have to make sure a mongoDB is available.
> More information on MongoDB
These are related to all MongoDB operations.
Open a connection to MongoDB. This is required to do before trying to fetch any data from other methods below.
`javascript`
db.openConnection('mongodb://localhost:27017/db')
These are related to all socket.io operations
Start a new socket server instance. This should be called before trying to use any other socket methods. This uses a global singleton so you will always have one connection being used throughout all socket functions.
`javascript`
const app = http.createServer(); // Also works with Express server
const connection = socket.startSockerServer(app, {
path: '/socket',
serveClient: false,
...more socket options
});
> All options can be found here
> More information on socket.io
Add a new namespace onto the socket. Will always check if the namespace already exists and only add when non-existing.
`javascript`
socket.addNamespace('superCoolNamespace');
Find an existing by its id (asynchronous)
`javascript`
await conversation.findConversationById('...');
List all available conversations for a specific department and employment. (asynchronous)
`javascript`
await conversation.findMyConversations({
departmentId: '...',
employmentId: '...',
},
{
limit: 10, // Optional
offset: 0, // Optional
})
Start a new conversation (asynchronous)
`javascript`
await conversation.startConversation({
employmentIds: ['firstId', 'secondId'],
});
Leave a conversation (asynchronous)
`javascript`
await conversation.leave('myConvId', 'myEmplId');
Deletes a conversation (asynchronous)
`javascript`
await conversation.deleteConversation('myConvId');
Mark a conversation as read (asynchronous)
`javascript`
await conversation.markAsRead('myConvId', 'myEmplId');
Adds a meta tag indicating when an employment joined a department conversation
`javascript`
await conversation.addJoinedDepartmentLaterOn('employmentId', ['departmentId']);
Send a message to a specific room (conversation)
`javascript`
await message.sendMessage('myRoomId', {
message: 'This is a message',
senderId: 'specificEmploymentId',
firstName: 'Willem',
lastName: 'Le carrotier',
});
- You can run npm run test to run all testsnpm run test:coverage` to run all tests with coverage report
- You can run