keydown wysyłanie posta co sekunde

0

Witam, otóż mam zamiar spróbować sobie zrobić chodzenie postacią, ale nie bardzo wiem jak ograniczyć liczbę wysyłanych postów.
próbowałem z setTimeout() ale to raczej nie oto chodzi
mój kod:

const Chodzenie= () => {
	setTimeout(() => {
		$.post('game.php?task=chodzenie', response => {
			response = JSON.parse(response);

			if(response.ok) {
				//todo
			}else{
				alert(response.msg);
			}
		});
	}, 10000);
}


	$(document).ready(() => {
		$(document).on('keydown', function (event) {
			if(event.which === 65 || event.keyCode === 68){
				Chodzenie();
			}
		});
	});
1

Popełniasz jeden wielki i podstawowy błąd. Zabrałeś się za pisanie gry nie mając pojęcia i koncepcji jak ona ma działać. Pomijam już brak umiejętności pisania w JavaScript bo rozumiem, że robisz to właśnie po to by się nauczyć.

Niezależnie od tego czy jesteś początkującym czy "starym wyjadaczem" metodologia podczas pisania programu zawsze taka sama:

  1. najpierw plan działań, opis słowny przynajmniej w pliku tekstowym,
  2. zastanowienie się nad algorytmem działania,
  3. na końcu siadamy do pisania kodu.

U Ciebie brakuje planu. Przez to nawet nie da się dobrze odpowiedzieć na Twoje pytania bo sam nie wiesz co i w jaki sposób chcesz osiągnąć ( chyba, ze wiesz ale nam tego nie przedstawiłeś ).

Powiedz mi dlaczego funkcje deklarujesz jako stałe (arrow functions)? Dlaczego nie piszesz tego jakoś normalnie w jakiejś klasie albo zwyczajnie strukturalnie używając deklaracji "function".
Proponuję abyś przerwał na kilka godzin przygodę z kodowaniem i dokładnie od początku do końca przeczytał stronę:
https://developer.mozilla.org/pl/docs/Learn/Getting_started_with_the_web/JavaScript_basics

1

Szukaj pod słowem "throttle". Możesz użyć np. http://code.google.com/p/jquery-debounce/.

Gry zazwyczaj działają na socketach (w Twoim przypadku web socketach), wtedy żądanie do serwera nie musi robić za każdym razem handshake itp. tylko istnieje "ciągłe połączenie" i śmiga to szybko.

1

jeśli robisz grę online, to powinieneś skorzystać z websocketów, Ograniczenie? moze skorzystaj z funkcji debounce odpowiednio zmienionej do twojej sprawy.

0
programistyczny napisał(a):

obie consty bo tak jakoś wyszło, gre robie jedynie dla testu i mieć zajęcie. a to co u góry napisałem, chodziło mi o ograniczenie ze np nawet jak wciśniemy klawisz to wysyła np 1 post co sekunde, a nie wali spam. twój link to w ogóle jakiś offtop. jeżeli bym znalazł coś w necie to raczej bym tu nie pisał posta

websocketów nie używam bo mało co o nich jest w google, brak przykładów działania np połączenie wysłanie wiadomości itp. + wyczytałem ze to trzeba jakoś zabezpieczyć bo inaczej można ddosować całą strone

Z przykładów i problemów, które podsyłasz widać, że umiesz jeszcze bardzo mało co samo w sobie nie jest niczym złym bo każdy zaczynał od "zera".
Także rozumiem, że jeszcze nie umiesz i chcesz się nauczyć. Jednak to, że Ci się NIE CHCE poszukać i dorabiasz do tego filozofię jest już godne potępienia.
Przeczytanie poradnika, który podesłałem by Ci nie zaszkodziło - może być pisał deklaracje funkcji jak należy bo ta skrócona jest owszem poprawna ale raczej powinna być używana do deklaracji metod w klasach aby nieco skrócić zapis ( a nie w kodzie bez wyraźnej struktury logicznej ). W Twoim przypadku tylko zaciemnia kod, nad którym zresztą sam ledwo panujesz. Olałeś także moją odpowiedź co do metodologii. Nie usiadłeś z kartką i długopisem żeby zaplanować co chcesz zrobić tylko nadal improwizujesz. W ten sposób Nic Ci z tego nie wyjdzie.

Co do przykładów na WebSocket nie ośmieszaj się bo to co piszesz potwierdza tylko to, że Ci się nie chce i nawet nie wpisałeś w google zapytania. WebSocket to podstawowa technologia dwukierunkowej komunikacji przeglądarki z serwerem i przykładów w internecie nie brakuje - tylko trzeba je przeczytać i zrozumieć.

Po polsku na 1 stronie google:

https://pl.wikipedia.org/wiki/WebSocket
https://bulldogjob.pl/news/751-prosto-o-websocket
http://adam.wroclaw.pl/2014/10/websocket-dwukierunkowa-komunikacja-z-przegladarka/

Po angielsku jest tego setki:

https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
https://javascript.info/websocket
https://www.pegaxchange.com/2018/03/23/websocket-client/
https://blog.sessionstack.com/how-javascript-works-deep-dive-into-websockets-and-http-2-with-sse-how-to-pick-the-right-path-584e6b8e3bf7

Jeśli to za mało to proszę podaj swój adres, przygotuj krzesło, zrób dobrą kawę to przyjadę do Ciebie do domu i zrobię wszystko za Ciebie OK ?

1

a jak zrobić ciągłe połączenie które przerwie dopiero wyjście ze strony lub utrata internetu? spróbuje sam coś tam zrobić z tych up linków, jeżeli będę miał problem to do ciebie napiszę + wyśle cały kod a ty powiesz co robię źle może tak być?

Może tak być. Tylko musisz przesłać cały kod javascript jak i serwera.

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