Sorunumu düzgün bir şekilde açıklamaya çalışacağım. Böyle, numara her 30 saniyede oluşturmak istiyorum:Her cihazda aynı anda her 30 saniyede bir işlevi nasıl çağırabilirim?
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
setTimeout(function(){
getRandomNumber(0,14);
}, 30000);
Bu benim bu kodla sayfasını açarsanız, ben rastgele sayı alacak gibi iyi, ama her cihazda aynı değildir çalışır, ancak arkadaşım eğer örneğin sonra açar Sayfayı açtığımdan 5 saniye gecikme yaşanıyor. Düzeltmek için herhangi bir yolu var mı? Zaman sunucusu almak gibi bir şey düşündüm ve ona göre işe yarayabilirdi, ama nasıl yapılacağını bilmiyorum.
websockets, uzun zamandır ya da herhangi bir çok yönlü sunucu-istemci haberleşme teknisyeni genellikle bu gibi durumlarda faturaya uymaktadır - bir sunucu kurulumunuz olduğunu aklınızda tutarak, –
Bu, çözülmesi çok zor bir sorundur. Zamanın doğru bir şekilde ayarlandığını ve senkronize edildiğini varsayarak, tüm istemciler büyük bir varsayımdır ve büyük olasılıkla kötü bir şekilde sona erdirilir. Prosedürü tersine çevirmeyi ve sunucudan tüm istemcilere bir bildirim çıkarmayı öneririm, böylece mümkün olan tek fark ağ gecikme süresine iner. Bunu yapmak için websockets kullanmaya bakın. –
İlk zaman aşımını, sistem saatine göre sonraki 30 saniyede gerçekleşecek şekilde ayarlayabilirsiniz. Senkronizasyon mümkün olduğunca kesin olmak zorundaysa, sunucudan zaman almalısınız. Sunucu, örneğin json olarak yazdırarak ve html'de bir hs değişkenine veya bir html veri özniteliğine yerleştirerek milisaniyeyi sonraki 30 saniyeye bile aktarabilir. Websockets yoluyla senkronize etmek muhtemelen en doğru sonuç olacaktır, ancak ilk zaman damgasıyla kolayca oldukça doğru bir sonuç elde edebilirsiniz. – Tuure