2016-04-03 49 views
0

Event-machine ve Ruby'yi kullanma. Şu anda bir oyun yaptım, dönüşün sonunda diğer kullanıcının orada olup olmadığını kontrol ediyordu. Ws.send() kullanarak kullanıcıya veri gönderirken, kullanıcının gerçekten veri aldığını veya alternatif bir çözüm olup olmadığını nasıl kontrol edebilirim?Ruby websocket Kullanıcının olup olmadığını kontrol edin

+0

Genellikle, uzaktan kumandanın sıkışıp kalmadığını kontrol etmek için soketin üzerinden ping işlemi yapmanız gerekir. – tadman

+0

Ping'in yanıt olup olmadığını kontrol etmek için bir geri çağırma var. Doğru ya da yanlış gibi mi? – ninetailschris

cevap

2

Kitaplık, temeldeki protokol öğelerine erişim sağladığından, bunu yapmak için uygulama protokolünüze öğe eklemeniz gerekir. Tipik bir yaklaşım, her bir mesaja bir tanımlayıcı ve bu tanımlayıcıları içeren onay mesajlarına sahip mesajlara yanıt eklemektir.

Böyle bir yaklaşımın, yalnızca bir istemci tarafından alınanlar hakkında daha iyi bir fikre sahip olmanıza yardımcı olacağını unutmayın. Hata durumunda belirli bir devletin güvencesi yoktur. Bir örnek, bir ACK gönderildikten sonra müşteriden sonra bir bağlantıyı kaybedecektir, ancak servis bunu almadı. Daha önce bahsettiğim karmaşıklığın bir sonucu olarak, çoğu işlemin idempotent - sisteme zarar vermeden tekrarlanabilmesi ve hata durumları sırasında/sonrasında tekrar tekrar oynatılabilmesinin çoğu kez denemek çoğu zaman daha kolaydır. Ek olarak, verilerin/bağlantının kaybedilmesiyle ortaya çıkan küçük hataların uzun vadede devam etmesini önlemek için ilgili durumu periyodik olarak senkronize etmenin bir yolunu bulabilirsiniz.

+0

Başparmak döndürdü. Sorunun cevabını buldum soket kapalı veya açık olup olmadığını belirlemek için socket.state kullandım ve bu yanıtı harekete. – ninetailschris

İlgili konular