Я занимаюсь разработкой приложения для чата, и у меня возникли проблемы с socket.io.
Материал работает отлично и быстро. Но как только в систему входит больше людей - все видят все сообщения, и рендеринг становится беспорядочным.
Я отправляю уникальный идентификатор с каждым сообщением, и я хотел бы создать комнаты, в которых люди могли бы общаться друг с другом (1 на 1)
Это происходит первым:
const socketMessage = {
type: type,
body: body,
author: author,
date: Date.now(),
id: chatId
};
const io = require('socket.io-client');
const socket = io(process.env.REACT_APP_WS_URL);
socket.emit('message-sent', socketMessage);
Это происходит на сервере, где это происходит:
socket.on('message-sent', data => {
socket.broadcast.emit('new-chat-message', data);
});
, который затем входит в пользовательский хук и добавляет к массиву сообщений.
export default function useGetChatMessages(_id) {
const [chatMessages, setChatMessages] = React.useState([]);
React.useEffect(() => {
const io = require('socket.io-client');
const socket = io(process.env.REACT_APP_WS_URL);
socket.emit('send-chat-id', _id);
socket.on('chat-messages', data => {
setChatMessages(data.messages);
});
socket.on('new-chat-message', message => {
setChatMessages(messages => [...messages, message]);
notification.play();
});
}, [_id]);
return chatMessages;
}
Я знаю, что часть вещания на моем сервере неверна, но я перепробовал много вещей:
Отправка сообщения chatId с сообщением, а затем выполните socket.join(chatId)
на нескольких этапах. Затем socket.to (chatId) .emit (...) и так далее. Но я не могу понять это правильно.
Может кто-нибудь помочь?
Заранее большое спасибо !! :-)