Я приглашаю вас следовать процедуре совместного сеанса и аутентификации пользователей, как описано в док расслоения вы используете: https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/SessionSetup.md
Прежде всего, необходимо реализовать обработчик сеанса Symfony, если вы решите использовать PDO Session Handler, документ находится здесь: http://symfony.com/doc/master/cookbook/configuration/pdo_session_storage.html (Не забудьте создать соответствующую БД, если вы это выбрали, объявив все службы, параметры и т. Д.).
Далее, вы должны установить config.yml использовать обработчик сеанса:
framework:
...
session:
handler_id: session.handler.pdo # adapt if you chose a different one
Setup ГСН WebSocket для его использования, а также:
gos_web_socket:
...
client:
firewall: main # the name of your firewall (can be an array if multiple)
session_handler: @session.handler.pdo
конца имеющейся документации на первая ссылка покажет вам несколько способов использования вашего клиентского манипулятора. Я знаю, что лучше скопировать пасту, но я действительно не чувствую, что копия, вставляющая весь документ, полезна и не ясна.
Для моего собственного использования, у меня нет клиента манипулятором, я просто использую
$this->clientStorage->getClient($connection->WAMP->clientStorageId);
для извлечения пользователя с текущим соединением. clientStorage
доступен, если вы передадите его (@gos_web_socket.client_storage
) конструктору службы в качестве аргумента. Конечно, вам нужно адаптировать свой конструктор:
class AcmeTopic implements TopicInterface
{
/**
* @param ClientStorageInterface $clientStorage
*/
protected $clientStorage;
public function __construct(ClientStorageInterface $clientStorage)
{
...
Чтобы получить доступ к другим пользователям, вы можете занять некоторое вдохновение:
foreach($topic as $subscriber)
{
$subscriber->event($topic->getId(),
['msg' => $this->clientStorage
->getClient($connection->WAMP->clientStorageId)
->getUsername().' is now online!']);
}
Надеется, что это помогает, я не так много опыта работы с ним, так как это мое первое использование. Я приглашаю вас спросить прямо на GitHub, если вы все еще застряли (часть вопросов), поскольку автор, вероятно, может помочь вам больше!
(Кроме того, я предположил, что вы используете Тему)
это даст только те же результаты, что и использование непосредственно манипулятора .. анонимный пользователь, даже если вы вошли в систему. – user3746259
Вы попробовали? Я успешно получаю зарегистрированного пользователя. –
Да, я попробовал, я просто возвращаю анонимного пользователя. Вы прочитали редактирование, которое я сделал в вопросе выше? Я думаю, что это проблема с cookie, не могли бы вы разместить свой конфиг (порты, домен и т. Д.). – user3746259