1.1.8 • Published 5 months ago

backend-chat-server v1.1.8

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

Backend Chat

Install

make install

Run

$ make start
# curl http://localhost:5001/api/v1/data

Install npm-package

npm i @hexlet/chat-server

Run npm-package

npx start-server

Usage

Usage: start-server start-server [OPTIONS]

Options:
  -v, --version            output the version number
  -a, --address <address>  address to listen on (default: "0.0.0.0")
  -p, --port <port>        port to listen on (default: 5001)
  -s, --static <path>      path to static assets files (default: "./build")
  -h, --help               display help for command

REST API

Login

/api/v1/login

axios.post('/api/v1/login', { username: 'admin', password: 'admin' }).then((response) => {
  console.log(response.data); // => { token: ..., username: 'admin' }
});

Get data

/api/v1/data

axios.get('/api/v1/data', {
  headers: {
    Authorization: `Bearer ${token}`,
  },
}).then((response) => {
  console.log(response.data); // => { channels: [...], currentChannelId: 1, messages: [] }
});

Create new user

/api/v1/signup

axios.post('/api/v1/signup', { username: 'newuser', password: '123456' }).then((response) => {
  console.log(response.data); // => { token: ..., username: 'newuser' }
});

Chat API

Socket

// subscribe new messages
socket.on('newMessage', (payload) => {
  console.log(payload); // => { body: "new message", channelId: 7, id: 8, username: "admin" }
});
// emit new message
socket.emit('newMessage', { body: "message text", channelId: 1, username: 'admin' });
// subscribe new channel
socket.on('newChannel', (payload) => {
  console.log(payload) // { id: 6, name: "new channel", removable: true }
});
// emit new channel
socket.emit('newChannel', { name: "new channel" });
// subscribe remove channel
socket.on('removeChannel', (payload) => {
  console.log(payload); // { id: 6 };
});
// emit remove channel
socket.emit('removeChannel', { id: 6 });
// subscribe rename channel
socket.on('renameChannel', (payload) => {
  console.log(payload); // { id: 7, name: "new name channel", removable: true }
});
// emit rename channel
socket.emit('renameChannel', { id: 7, name: "new name channel" });

Hexlet Ltd. logo

This repository is created and maintained by the team and the community of Hexlet, an educational project. Read more about Hexlet.

See most active contributors on hexlet-friends.