Wpis z mikrobloga

Chciałbym zrobić w swojej aplikacji chatu info, że ktoś pisze wiadomość. Backend mam w Javie i Springu i używam tam websocketów. Na froncie używam stomp.js. Obecnie po każdym naciśnięciu klawisza wywoływana jest funkcja, która wysyła informację, że ktoś pisze wiadomość i następnie z opóźnieniem 0.5s, że przestał pisać. Efekt jest taki, że ta informacja miga. Jak najlepiej zrobić takie coś w JavaScripcie, tak żeby to było płynne. Jestem bardziej backendowcem, a z JavaScriptu to wgl. jestem zielony.

#java #spring #javascript
  • 5
No informacja miga bo delay jest za mały. Zwiększ z tego 0.5s na 3-4 sek. i będzie dużo lepiej. Czasami ludzie robią przystanki po 1-2 sek. na zastanowienie a niektórzy (którzy piszą np. na telefonie robiąc "swipe" potrzebują nawet kilku sekund żeby napisać nowe słowo). Po wysłaniu wiadomości od razu wysyłaj że ktoś skończył pisać i będzie dobrze.
@Rst00: ustawienie delay na 3-4s daje to, że ta informacja zaczyna migać po 3-4s, ale dalej miga tak jak migała. Wrzucam kod całej tej funkcjonalności w JS. Może tutaj coś źle napisałem?

Aa i ta funkcja jest wywoływana w inpucie w taki sposób: onkeyup="startTyping();".
Pobierz VirtualSlimShady - @Rst00: ustawienie delay na 3-4s daje to, że ta informacja zaczyna...
źródło: typing
@VirtualSlimShady a zaczyna migać dopiero po 4 sek? Z kodu wynika że zaczynasz pisać (załóżmy 1 znak), zaczyna się odliczać setTimeout, po 2 sek piszesz 2 znak i znowu odpala się setTimeout, później po kolejnych 2 sekundach piszesz 3 znak i zaczyna informacja o pisaniu wiadomości migać bo wykonał się timeout z pierwszego znaku. To co potrzebujesz to clearTimeout na sam początek startTyping żeby scancelowac setTimeout a sam setTimeout powinieneś mieć przypisany