@hexlet/chat-server
v2.0.4
Published
## Install
Downloads
1,390
Keywords
Readme
Backend Chat
Install
npm i @hexlet/chat-server
Run
npx start-server
Usage
Usage: 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
Create new user
POST /api/v1/signup
axios.post('/api/v1/signup', { username: 'newuser', password: '123456' }).then((response) => {
console.log(response.data); // => { token: ..., username: 'newuser' }
});
Login
/api/v1/login
axios.post('/api/v1/login', { username: 'admin', password: 'admin' }).then((response) => {
console.log(response.data); // => { token: ..., username: 'admin' }
});
Get channels
GET /api/v1/channels
axios.get('/api/v1/channels', {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // =>[{ id: '1', name: 'general', removable: false }, ...]
});
Add channel
POST /api/v1/channels
const newChannel = { name: 'new channel' };
axios.post('/api/v1/channels', newChannel, {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // => { id: '3', name: 'new channel', removable: true }
});
Edit channel
PATCH /api/v1/channels/:id
const editedChannel = { name: 'new name channel' };
axios.patch('/api/v1/channels/3', editedChannel, {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // => { id: '3', name: 'new name channel', removable: true }
});
Remove channel
DELETE /api/v1/channels/:id
axios.delete('/api/v1/channels/3', {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // => { id: '3' }
});
Get messages
GET /api/v1/messages
axios.get('/api/v1/messages', {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // =>[{ id: '1', body: 'text message', channelId: '1', username: 'admin }, ...]
});
Add message
POST /api/v1/messages
const newMessage = { body: 'new message', channelId: '1', username: 'admin };
axios.post('/api/v1/messages', newMessage, {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // => { id: '1', body: 'new message', channelId: '1', username: 'admin }
});
Edit message
PATCH /api/v1/messages/:id
const editedMessage = { body: 'new body message' };
axios.patch('/api/v1/messages/1', editedMessage, {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // => { id: '1', body: 'new body message', channelId: '1', username: 'admin }
});
Remove message
DELETE /api/v1/messages/:id
axios.delete('/api/v1/messages/3', {
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => {
console.log(response.data); // => { id: '3' }
});
Socket event subscribes
// subscribe new messages
socket.on('newMessage', (payload) => {
console.log(payload); // => { body: "new message", channelId: 7, id: 8, username: "admin" }
});
// subscribe new channel
socket.on('newChannel', (payload) => {
console.log(payload) // { id: 6, name: "new channel", removable: true }
});
// subscribe remove channel
socket.on('removeChannel', (payload) => {
console.log(payload); // { id: 6 };
});
// subscribe rename channel
socket.on('renameChannel', (payload) => {
console.log(payload); // { id: 7, name: "new name channel", removable: true }
});
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.