Size: a a a

Laravel для начинающих

2020 February 20

АО

Александр Орловский in Laravel для начинающих
далее вебсокет сервер смотрит есть ли например аксес токен получателя сообщения в пуле клиентов вебсокет сервера, если да, то достает этого клиента из пула, берет его сокет ИД и на этот сокет ид отправляет сообщение
источник

АО

Александр Орловский in Laravel для начинающих
поэтому как то исхитриться пользователю в этой схеме и отправить  и прочитать чужое сообщение просто анрил, от него ничего не зависит. можешь сурсы мои поковырять, там пыховский бек в той же репе валяется
источник

И

Игорь in Laravel для начинающих
Александр Орловский
технически канал один для всех юзеров и твой вебсокет сервер разруливает кому что отправлять в конечном счете  исходя из айдишника сокета, пользователь сам по себе не может решить на какой "канал" подписаться, он подписывается просто на события которые твой вебсокет сервак рассылает, а называются эти события для всех юзеров одинаково (по крайней мере пока ты не сделаешь специальную реализацию которая позволяет это делать иначе, из коробки  - нет).  но потребуется ассоциировать конкретного юзера с его сокет айди, поскольку передача сообщений происходит, олбычно с посредничеством твоего пхп приложения. например, когда юзер отправляет сообщение, запрос идет в твое пхп приложение, которое пишет сообщение в бд, а уже потом  броадкастит в вебсокет-сервер это сообщение.  то есть пользователь использует вс-сервер чисто для того чтобы слушать события, для приемки сообщений короче. для того чтобы ассоциировать айдишник юзера с сокет айди на стороне вебсокет сервера, можно юзать какой-то access_token уникальный для каждого пользователя. вот старый драфт как это плюс-минус того как это использовалось в одном из моих приложений:

https://gitlab.com/moofik12/masterhome/-/blob/master/frontend/common/mixins/websocket.js - запрашивает с бека аксесс токен, подписывается на вс сервер, к событию цепляем этот самый аксесс токен

https://gitlab.com/moofik12/masterhome/-/blob/master/socket-server/src/SocketServer.ts  - 36 строчка -регистрация юзера в пуле активных пользователей, 59я - отправака пользователю сообщения  (сообщение берется из очереди рэббита), апдейт дергается вот этим классом  https://gitlab.com/moofik12/masterhome/-/blob/master/socket-server/src/Service/Message/MessageListener.ts
Почему старый драфт. Где новый?
источник

И

Игорь in Laravel для начинающих
И на чем у тебя северная часть?
источник

АО

Александр Орловский in Laravel для начинающих
Игорь
Почему старый драфт. Где новый?
новый на ларке переписывается =) в закрытой репе пока
серверная часть на симфони 4.2
источник

И

Игорь in Laravel для начинающих
Я правильно понял, чтобы убрать сообщения от любопытных глаз, нужно использовать какие-нибудь токены?
источник

И

Игорь in Laravel для начинающих
Тут главное ассоциировать само подключение к сокету с юзером, который подключился. Именно это решает алгоритм?
источник

R

Ruslan in Laravel для начинающих
Привет всем! Помогите пожалуйста. Я уже просто хз что делать и как. В общем я перенес проект на ларе с локалки на сервер. Сбросил весь кэш, накатил миграции. Регистрирую юзера (он появляется в таблице)...и тут жесть налетает. Пытаюсь авторизоваться и после ввода логина и пароля меня снова кидает на эту же форму. Просто ребутится страница и все. Я пробовал все заново делать, менял кодировку бд, отрубал мидлварь авторизации. В общем я не пойму почему так и почему все по классике - локально пашет, а на сервере НЕТ!((
источник

R

Ruslan in Laravel для начинающих
как будто сессия не создается или что то около того
источник

АО

Александр Орловский in Laravel для начинающих
Игорь
Тут главное ассоциировать само подключение к сокету с юзером, который подключился. Именно это решает алгоритм?
да да, это ключевой момент. технически, вообще, ты когда пишешь свой вебсокет-сервер, ты же сам определяешь логику, для отправки сообщений. отправлять сообщения тебе надо по айдишникам пользовательских сокетов. таким образом пользователь может подслушать сообщения другого пользователя если твой вебсокет сервер каким то хаотичным образом будет сообщения рассылать по айдишникам сокетов, ну или всем сокетам сразу ))
источник

И

Игорь in Laravel для начинающих
Ruslan
Привет всем! Помогите пожалуйста. Я уже просто хз что делать и как. В общем я перенес проект на ларе с локалки на сервер. Сбросил весь кэш, накатил миграции. Регистрирую юзера (он появляется в таблице)...и тут жесть налетает. Пытаюсь авторизоваться и после ввода логина и пароля меня снова кидает на эту же форму. Просто ребутится страница и все. Я пробовал все заново делать, менял кодировку бд, отрубал мидлварь авторизации. В общем я не пойму почему так и почему все по классике - локально пашет, а на сервере НЕТ!((
А в реквестах валидации или в контроллере не стоит редирект?
источник

R

Ruslan in Laravel для начинающих
Игорь
А в реквестах валидации или в контроллере не стоит редирект?
единственный редирект это вот этот
источник

R

Ruslan in Laravel для начинающих
public function destroy($id)
   {
       $staff = Staff::find($id);
       $staff->delete();

       return redirect('/staff');
   }
источник

И

Игорь in Laravel для начинающих
Александр Орловский
да да, это ключевой момент. технически, вообще, ты когда пишешь свой вебсокет-сервер, ты же сам определяешь логику, для отправки сообщений. отправлять сообщения тебе надо по айдишникам пользовательских сокетов. таким образом пользователь может подслушать сообщения другого пользователя если твой вебсокет сервер каким то хаотичным образом будет сообщения рассылать по айдишникам сокетов, ну или всем сокетам сразу ))
А мы технически только принимать может? В сокет с клиента можем что-нибудь отправить?
источник

АО

Александр Орловский in Laravel для начинающих
Игорь
А мы технически только принимать может? В сокет с клиента можем что-нибудь отправить?
можем, да. мы клиентом подписывается на события, и когда подписываемся на события, мы цепляем какую то информацию
источник

АО

Александр Орловский in Laravel для начинающих
в моем случае при подписке на события сервера я цепляю в дату дополнительно аксесс токен
источник

И

Игорь in Laravel для начинающих
Ruslan
public function destroy($id)
   {
       $staff = Staff::find($id);
       $staff->delete();

       return redirect('/staff');
   }
А там еще в контроллере есть переменная redirectTo или как-то так? Там пусто?
источник

АО

Александр Орловский in Laravel для начинающих
по другому никак
источник

ЕК

Егор Карась in Laravel для начинающих
Игорь
А мы технически только принимать может? В сокет с клиента можем что-нибудь отправить?
Так в этом смысл)
источник

И

Игорь in Laravel для начинающих
Александр Орловский
можем, да. мы клиентом подписывается на события, и когда подписываемся на события, мы цепляем какую то информацию
А какую информацию? Uuid какой-нибудь нам сокетсоединение шлет?
источник