Size: a a a

NestJS — русскоязычное сообщество

2020 August 09

🏡К

🏡 Назар Калитюк... in NestJS — русскоязычное сообщество
Igor' Emberovich
Я в тс не особо пока продвинут и на лету partial  использовать пока не могу.  Поэтому пока придётся мапперами пользоваться.

А как лучше проект группировать? По "бизнес"-сущностям (типа "products", "posts", "users") или по MVC-сущностям (типа controllers, interfaces, services) ?
по бизнес. Вот пример конструктора entity
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
Artem
Http есть, тем не менее, вебсокеты заголовки не дают выставлять свои, или я чего то не знаю?
Правильно, не дают (только при первом handshake соединении)
Вы можете авторизоваться первый раз любым удобным способом, выдать одноразовый токен для подключения по сокету, передать его при первом сокет сообщении, проверить на сервере, авторизовать пользователя и удалить.
источник

JB

Joe Beretta in NestJS — русскоязычное сообщество
🏡 Назар Калитюк
по бизнес. Вот пример конструктора entity
Это все можно через class-transformer реализовать, чтобы сервисы не засорять, можно в сущности прописать трансформы входные из dto а для дто из сущности при отдаче ответа на клиенты. В данный момент нет возможности показать пример, но логика думаю ясна
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
Artem
господа, а как организовать авторизацию сокета через JWT
входные:
вебсокет, а не поллинг
в идеале без query

заодно как хранить данные об авторизованном сокете?
Если сокет авторизовался, то можно считать его авторизованным до конца соединения, до close/end события.

Это что-то, что висит в памяти, для удобства можно сопоставить сокет с какими-то пользовательскими данными, но сам сокет нельзя сохранить, это не сессия поверх http.

Если соединение разорвано, то авторизовывать заново, как и в первый раз. Вероятно передавать при первом сообщении jwt или чтото-другое.

Можно наверно примеры вот тут найти centrifugal.github.io
источник

A

Artem in NestJS — русскоязычное сообщество
Рафаил Мамедов
Если сокет авторизовался, то можно считать его авторизованным до конца соединения, до close/end события.

Это что-то, что висит в памяти, для удобства можно сопоставить сокет с какими-то пользовательскими данными, но сам сокет нельзя сохранить, это не сессия поверх http.

Если соединение разорвано, то авторизовывать заново, как и в первый раз. Вероятно передавать при первом сообщении jwt или чтото-другое.

Можно наверно примеры вот тут найти centrifugal.github.io
это я понимаю, вопрос больше про то, как хранить авторизацию? типа client.authorized = true и client. token = ‘JWT’
а потом где нужно гвардом из токена доставать юзера
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
Artem
это я понимаю, вопрос больше про то, как хранить авторизацию? типа client.authorized = true и client. token = ‘JWT’
а потом где нужно гвардом из токена доставать юзера
Не совсем пониманию, что значит хранить авторизацию?
Хранение авторизации в классическом http необходимо потому что http соединение открывается и закрывается после ответа для каждого запроса

Websocket открывается и не закрывается пока оно не будет завершено сервером/клиентом.
источник

A

Artem in NestJS — русскоязычное сообщество
Рафаил Мамедов
Не совсем пониманию, что значит хранить авторизацию?
Хранение авторизации в классическом http необходимо потому что http соединение открывается и закрывается после ответа для каждого запроса

Websocket открывается и не закрывается пока оно не будет завершено сервером/клиентом.
кейс такой, что сокет может быть открыт и не авторизован, либо же авторизован. Как моим листенерам понять, авторизован сокет который стучится на них или нет?
источник

A

Artem in NestJS — русскоязычное сообщество
Artem
кейс такой, что сокет может быть открыт и не авторизован, либо же авторизован. Как моим листенерам понять, авторизован сокет который стучится на них или нет?
ну и заодно если авторизован, то связать его с юзером
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
Artem
кейс такой, что сокет может быть открыт и не авторизован, либо же авторизован. Как моим листенерам понять, авторизован сокет который стучится на них или нет?
Помечать это в самом сокет обьекте в коде.
источник

LK

L K in NestJS — русскоязычное сообщество
Artem
кейс такой, что сокет может быть открыт и не авторизован, либо же авторизован. Как моим листенерам понять, авторизован сокет который стучится на них или нет?
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
Artem
ну и заодно если авторизован, то связать его с юзером
Также можно при первом авторизации понять какой это юзер и поместить эту информацию в сокет объект.
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
Artem
ну и заодно если авторизован, то связать его с юзером
или если не хочется засорять объект сокета, то можно создать массив\объект авторизованный пользователей и добавлять туда инфу о новом подключенном пользователе в виде объекта, одно из полей этого объекта будет ссылкой на активный сокет
а при close\end сокета удалять этот объект

users = []
users.push({ id: 11, profile: …, ws: ws})  или users.clientId = { profile: …, ws: ws}

ну или как удобно будет
источник

IF

Igor Filippov in NestJS — русскоязычное сообщество
🏡 Назар Калитюк
по бизнес. Вот пример конструктора entity
Классная тема, спасибо
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
вот кстати есть простой пример
https://github.com/websockets/ws/blob/40a9d2aff0214e255294efceadab59f4f38d099d/examples/express-session-parse/index.js

в котором оба ваши вопроса реализованы

и авторизация при помощи информации из первого http запроса
и сохранение информации о том какой сокет какому юзеру принадлежит
источник

LK

L K in NestJS — русскоязычное сообщество
Рафаил Мамедов
вот кстати есть простой пример
https://github.com/websockets/ws/blob/40a9d2aff0214e255294efceadab59f4f38d099d/examples/express-session-parse/index.js

в котором оба ваши вопроса реализованы

и авторизация при помощи информации из первого http запроса
и сохранение информации о том какой сокет какому юзеру принадлежит
мне это не нужно, по ссылке которую я кидал - личный пример с опытом на несте
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
L K
мне это не нужно, по ссылке которую я кидал - личный пример с опытом на несте
упс) не туда ответил
источник

РМ

Рафаил Мамедов... in NestJS — русскоязычное сообщество
Artem
ну и заодно если авторизован, то связать его с юзером
скинул пример с реализацией обоих ваших вопросов
источник

A

Artem in NestJS — русскоязычное сообщество
Рафаил Мамедов
скинул пример с реализацией обоих ваших вопросов
Спасибо!
источник
2020 August 10

MV

Maxim Vynogradov in NestJS — русскоязычное сообщество
Привет! Подскажите, какой подход для graphql посоветуете использовать ?  через dto или через схему?
источник

JB

Joe Beretta in NestJS — русскоязычное сообщество
Maxim Vynogradov
Привет! Подскажите, какой подход для graphql посоветуете использовать ?  через dto или через схему?
однозначно code-first (через дто).  Его завезли полноценно с 7 версии, и полагаю дальше все больше его и будут поддерживать
источник