zapraszam do naśladowania procedury udostępniania sesji i uwierzytelniania użytkownika, jak wyjaśniono w dokumencie wiązki użyć: https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/SessionSetup.md
Najpierw trzeba zaimplementować obsługi sesji Symfony, jeśli zdecydujesz się użyć PDO Session Handler, dokument znajduje się tutaj: http://symfony.com/doc/master/cookbook/configuration/pdo_session_storage.html (Nie zapomnij utworzyć odpowiedniego DB, jeśli tak zdecydujesz, deklarując wszystkie usługi, parametry itd.).
Następnie trzeba ustawić config.yml korzystać z obsługi sesji:
framework:
...
session:
handler_id: session.handler.pdo # adapt if you chose a different one
konfiguracji GOS websocket za korzystanie z niego, a także:
gos_web_socket:
...
client:
firewall: main # the name of your firewall (can be an array if multiple)
session_handler: @session.handler.pdo
koniec dostępne w dokumentacji pierwszy link pokaże kilka sposobów użycia manipulatora klienta. Wiem, że lepiej jest kopiować wklej, ale naprawdę nie mam ochoty kopiować wklejanie całego dokumentu jest użyteczne, ani jasne.
na własny użytek, nie mam manipulator klienta, po prostu użyć
$this->clientStorage->getClient($connection->WAMP->clientStorageId);
w celu odzyskania użytkownikowi bieżącego połączenia. Model clientStorage
jest dostępny, jeśli podasz go (@gos_web_socket.client_storage
) do konstruktora usług jako argument. Oczywiście, trzeba dostosować swój konstruktor:
class AcmeTopic implements TopicInterface
{
/**
* @param ClientStorageInterface $clientStorage
*/
protected $clientStorage;
public function __construct(ClientStorageInterface $clientStorage)
{
...
dostęp do innych użytkowników, można wziąć trochę inspiracji:
foreach($topic as $subscriber)
{
$subscriber->event($topic->getId(),
['msg' => $this->clientStorage
->getClient($connection->WAMP->clientStorageId)
->getUsername().' is now online!']);
}
nadzieję, że to pomoże, nie mam aż tyle doświadczenia z nim, jak to jest moje pierwsze użycie. Zapraszam do zadawania pytań bezpośrednio na GitHubie, jeśli nadal tkwisz w martwym punkcie (problemy z częścią), ponieważ autor prawdopodobnie może ci pomóc!
(Również Przypuszczałem użyć tematu)
to da takie same wyniki, jak użycie bezpośrednio manipulatora .. anonimowego użytkownika, nawet jeśli jest zalogowany. – user3746259
Próbowałeś? Pomyślnie zrobię to z zalogowanym użytkownikiem. –
Tak, próbowałem, właśnie otrzymuję anonimowego użytkownika. Czy przeczytałeś edycję, którą napisałem w powyższym pytaniu? Myślę, że to jest problem z plikami cookie, czy mógłbyś opublikować swoją konfigurację (porty, domeny itp.)? – user3746259