Size: a a a

Node.js — русскоговорящее сообщество

2020 January 19

А

Артём in Node.js — русскоговорящее сообщество
Неавторизованных юзеров не существует, т.к. на фронте если человек не залогинился, то он просто не коннектится   через сокет, соответсвенно в массиве нет объекта с его id, т.е. шаг с сокетом пропускается и просто добавляется сообщение в бд, которое он увидит при входе
задача сокета оповестить юзера о новом сообщение, а если он на странице чата - показать это сообщение. Во фронтенд приложении эвенты принимаются в глобальном хранилище
источник

Ð

Ð in Node.js — русскоговорящее сообщество
как ты аутентифицируешь сокет?
источник

А

Артём in Node.js — русскоговорящее сообщество
при io.on('connection'.. кладу в массив объект такого вида {user_id, socket_id }
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Артём
при io.on('connection'.. кладу в массив объект такого вида {user_id, socket_id }
отлично, то есть любой хрен может сделать коннкет к твоему сокету, передать произвольный юзерайди и получить доступ?
источник

А

Артём in Node.js — русскоговорящее сообщество
нет, при коннекте передается токен, который проверяется через бд
источник

Ð

Ð in Node.js — русскоговорящее сообщество
так я об этом спрашивал
источник

Ð

Ð in Node.js — русскоговорящее сообщество
ладно, то есть клиент шлет некий токен (где интересно он его берет?)
источник

Ð

Ð in Node.js — русскоговорящее сообщество
в итоге у тебя получается сокет не зависящий от того на какой странице был юзер, верно?
источник

Ð

Ð in Node.js — русскоговорящее сообщество
зачем тогда тебе сокет внутри контроллеров? они свое уже отработали
источник

Ð

Ð in Node.js — русскоговорящее сообщество
при переходе на другую страницу будет другой сокет
источник

А

Артём in Node.js — русскоговорящее сообщество
почему?
источник

Ð

Ð in Node.js — русскоговорящее сообщество
потому что браузер перезагрузит вкладку
источник

А

Артём in Node.js — русскоговорящее сообщество
на фронте крутится SPA
источник

А

Артём in Node.js — русскоговорящее сообщество
даже если перезагрузится, данные по юзеру все равно будут в массиве, т.к. сначала объект с прошым сокетом удалится, а потом добавится новый
источник

Ð

Ð in Node.js — русскоговорящее сообщество
или там сайт не сайт а моностраничный апликейшен? тогда это не переход на другую страницу, а замена содержимого текущей
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Артём
даже если перезагрузится, данные по юзеру все равно будут в массиве, т.к. сначала объект с прошым сокетом удалится, а потом добавится новый
да, но зачем тебе сокет в контроллере?
источник

Ð

Ð in Node.js — русскоговорящее сообщество
при такой архитектуре у тебя должна быть карта сокетов, где ключами являются юзерайди, а значениями - сокеты всех открытых юзером страниц
источник

А

Артём in Node.js — русскоговорящее сообщество
чтобы чат был рилтаймовый. Я просто хз какая практика лучше. Полностью на эвентах через сокеты сделать, или через эндпоинты? Первый раз работаю с сокетами, ещё не особо разобрался с неймспейсами, румами и тд
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Артём
чтобы чат был рилтаймовый. Я просто хз какая практика лучше. Полностью на эвентах через сокеты сделать, или через эндпоинты? Первый раз работаю с сокетами, ещё не особо разобрался с неймспейсами, румами и тд
для чата лучше такая практика, что когда юзер открывает страницу чата, эта страница создает ему сокет привязанный к этой странице через path сокета. На сервере ты ловишь сокеты с этим path и запоминаешь их в каком-то месте, которое является источником евентов о новых сообщениях в этот чат для этого юзера
источник

倫岡

倫太郎 岡部 in Node.js — русскоговорящее сообщество
источник