Obecna funkcja nawet nie działa jak trzeba, bo skąd niby się bierze to key
?
Najważniejsza sprawa jest taka, że raczej będzie to znikomy narzut i IMO nie powinieneś się tym przejmować - ba, nawet lepiej, że wiesz, że gracz nadal jest podpięty do gry (chyba, że masz do tego coś osobnego) - bardzo złą rzeczą jest przedwczesna optymalizacja - jeszcze nie wiesz jak coś wpływa na system, a już chcesz to zrobić lepiej. Obecnie nie masz nawet działającego kodu, a już chcesz, żeby był szybszy - aż się przypomina obrazek: https://theprofoundprogrammer.com/post/28974600028/text-it-doesnt-work-but-its-fast
A rozwiązanie jest proste, generalnie zahacza o banalne, na poziomie pierwszych dni nauki języka. Trochę mi to nie pasuje do websocketów - websockety to nie jest temat na pierwsze dni nauki. Upewnij się więc, że nie gonisz zbyt szybko, nie próbujesz zbyt szybko zbudować czegoś, co działa, nie mając świadomości o pewnych podstawach technologii, których używasz.
A rozwiązanie to coś w stylu:
let lastKey;
function (key) {
if (lastKey !== key) {
websocketdata.send(key);
lastKey = key;
}
}