Задать вопрос

Как сделать личные сообщения на node js socket.io?

Как сделать личные сообщения на node js socket.io?
Есть сервер, есть авторизация и чат. Авторизация связана с чатом.
Вопрос: Как делается не общий чат, а приватный?!?!? В интернете ничего не нашёл.
Если можно, приведите какой-нибудь простой код или объясните принцип работы.
Я знаю как отправить сообщение конкретному сокету, по socket.id но я не знаю как его использовать и вообще не понимаю, что с ним делать, как получить от клиента его и по его же ид ему переслать сообщение. Помогите.
  • Вопрос задан
  • 1680 просмотров
Подписаться 4 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 2
Со стороны клиента передай jwt токен или куки (сессию). На стороне ноды напиши мидлвар, который в момент подключения обработает эти данные и запишет клиента.
Например, так:
const io = socket();

io.use(async (socket, next) => {
	try {
		const { token } = socket.handshake.query;
		const data = await verify(token);
		socket.request.user = data;
		return next();
	} catch (err) {
		// ignore
		return next();
	}
})


Теперь у тебя в объекте подключения есть данные пользователя и ты можешь отправить сообщение конкретному пользователю, найдя его соединение.
Ответ написан
@artkhromov
Учиться когда уже знаешь азы проще всего изучая опенсорсные проекты
Попроще:
Let's Chat sdelements.github.io/lets-chat
node-chat https://github.com/IgorAntun/node-chat
Посложнее:
Rocket Chat https://rocket.chat (https://github.com/RocketChat)

+ У самого Socket.io неплохой туториал насколько я помню и Feathers.js (реалтайм фреймворк на основе Express)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы