serwer NIO: nasłuchiwanie socketu po stronie klienta

0

Cześć. Piszę obecnie serwer nio pod javą, który byłby pewnego rodzaju domem aukcyjnym. Moim zadaniem jest zaimplementowanie tego z nieskończoną pulą przedmiotów przy następujących założeniach:

  • aukcjonujący może włączyć się do licytacji w dowolnej chwili
  • do włączającego się użytkownika przychodzi informacja o aktualnie licytowanym przedmiocie oraz jego obecna cena
  • jeśli cena przedmiotu została zmieniona informacja o tym zostaje wysłana do wszystkich aukcjonujących
  • na zakończenie aukcji informacja o zwycięzcy zostaje rozesłana do wszytkich, którzy brali udział w aukcji

A teraz pytanie... czy istnieje jakiś "socket listener", który dawałby znać, że pojawiło się coś na sockecie? Interesuje mnie tutaj strona klienta, bo po stronie serwer będę miał selector z javy. Macie pomysły jak możnaby to dobrze zaimplementować? (Oczywiście zawsze pozostaje pętla nieskończona i sprawdzanie czy na sockecie się coś pojawiło, ale jest to nieeleganckie i nieefektywne)

dzięki za wszelkie sugestie,
pozdrawiam

0

Oczywiście nie ma w API, ale jest w googlu
http://www.javafaq.nu/java-example-code-517.html

0

pytałem o rozwiązanie z javy SE... a nawet jeśli to rozumowanie przenieść z ME to średnio mi leży bo tutaj jest właśnie nieskończona pętla czytania, która blokuje klienta, a mi właśnie chodzi o to, żeby było to rozwiązanie asynchroniczne, ale dzięki za próbę ;)

0

@carek, nie tak. Pętla jest uruchamiana w osobnym wątku, który nie blokuje klienta. Jest to mechanizm bardzo podobny do tego jaki obsluguje zdarzenia klawiatury/myszy w AWT/SWING.

0

hmm właśnie chciałem to napisać jakby ktoś miał podobny problem ;] generalnie socket.read() blokuje się czytając endpointa, więc przeniesienie do odrębnego wątku i puszczenie go w pętli wraz z obsługą tego jak się coś pojawi jest prostym i w miarę dobrym rozwiązaniem... hehe dzięki za uwagę :)

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