Laravel Socket system aukcyjny

0

hej,
próbuję w Laravel stworzyć prosty system aukcyjny
mam tabelę gdzie zapisuję id użytkownika id aukcji i cenę. Wiadomo, najwyższa cena wygrywa. Chcę zrobić coś jak ma np allegro. Jeśli ktoś przebiję cenę to cena aktualizuje się dla wszystkich
Całość nie wydaje się skomplikowana jednak chcę aby to działało w czasie rzeczywistym.
zainstalowałem laravel-echo-server, predis teraz mam pytanie jak to powinno przebiegać po stronie zarówno klienta jak i serwera.

Dzięki

0

W zasadzie to sam sobie odpowiedziałeś. Musisz doprecyzować pytanie z czym masz konkretnie problem.

Tak w skrócie:
Masz np. model Product z ceną "36.50". Użytkownik przebija ją do "37.00" robiąc jakiegoś requesta i ta nowa wartość przez update zapisuje się w bazie i wysyłasz notyfikację przez Socket (w tym przypadku laravel-echo) z nową ceną do wszystkich odbiorców (osób przeglądających tą stronę), aktualizujesz cenę po stronie frontendu (Vue) i gotowe.

Będzie działać, ale jeszcze by było zgodnie ze sztuką to tą notyfikacje nie wywołuj bezpośrednio w kontrolerze, tylko wywołaj Event np. priceChanged i dopiero z niego to dalej poprowadź.

Zapewne też będziesz chciał mieć dostęp do każdego przebicia ceny no i wiadomo tego kto dał najwięcej, wiec dodatkowo tabela np Bids w której będzie trzymana kwota, id produktu, id użytkownika i data.

0

Okej, po aktualizacji danych w bazie wywołuję event(new TestEvent()) w konsoli gdzie mam odpalone laravel echo jest informacja że się wywołuje ale jak po stronie klienta (w Vue) przechwycić odpowiednie dane i zaktualizować cenę dla wszystkich?
konfiguracja w bootstrap.js

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
})

Vue.prototype.$echo = window.Echo;

i teraz gdzie w komponencie najlepiej wywołać this.$echo.channel().listen() ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1