Ben Meteor içeren bir metin tabanlı macera oyunu geliştiriyorum ve bazı unsurları nasıl ele bir sorun haline çalıştırıyorum. Yani, İstemci'den herhangi bir girdi olmadan Sunucudan Müşteriye veri gönderme.Akış veriler:
fikri bir oyuncunun canavar, savaş hasarı ile mücadele yapan ve Player güncellenmesi ve zaman canavar nesneleri sunucuda bir döngü içinde meydana olacak olmasıdır. Müzikçalar zarar gördüğünde, müşteri arayüzünü buna göre güncellemelidir. Yayınlama/Abone olmak için böyle bir şey mümkün mü?
Ben temelde oturur ve buna göre mücadele günlüğünü güncellemek için sunucudan olaylarını dinler şey istiyorum. pseudo-code
, bu çizgisinde bir şey ne aradığım:
// Client Side:
Meteor.call("runCommand", "attack monster");
// Server Side
Meteor.methods({
runCommand: function(input) {
// Take input, run the loop to begin combat,
// whenever the user takes damage update the
// client UI and output a line saying how much
// damage the player just received and by who
}
});
Sana müşteriye bir koleksiyon yayınlayabilir anlıyoruz, ama bu gerçekten bir tarihinde belirli değil Ben arıyoruz, tüm Player nesnesini istemciye yayınlamak istemiyorum, sadece istemciye bir metin yazmak için bir çizgi yazmasını istiyorum. ".
Ben isteseydim, sadece UI güncelleştirmek için bunu söylüyorum müşteriye bir olay yayarlar olabilir SocketIO benzer bir işlevi olduğunu umuyordum. Sanırım bunu yapabilmek için Socketio'yu kullanabilirim, ama insanlar böyle bir şeyin Meteor'la tamamıyla SocketIO olmadan yapılabilmesi konusunda kararlı görünüyorlardı, sadece nasıl olduğunu anlamıyorum.
Bu senaryoyu gördüğüm tek çıkışlar: Kötü bir fikir gibi görünen tüm oyun mantığı istemci tarafının yazılması, tüm muharebe kayıtlarının aşırı derecede aşırı görünen bir koleksiyona yazılması (ama belki de değil mi?) veya metin kutusuna yeni bir satır yazmasını söylemek için istemciye mesaj göndermek için bir çeşit SocketIO tipi araç kullanma. Meteor, bir muharebe günlük koleksiyon oluşturmak kullanma
Ben bir koleksiyona yazma hiç aşırı olduğunu düşünmüyorum ama meteorın içlerine çok aşina değilim. Anladığım kadarıyla, sadece diffs müşterileriyle senkronize olur, bu yüzden bir koleksiyonu koleksiyona eklerseniz veya güncellerseniz, senkronize edilecek tek şey budur. Koleksiyonlar, bilgimden en iyi şekilde, istemci ile sunucu arasında senkronize edilen tek veri olduğundan, meteor'da başka seçenekler olduğunu düşünmüyorum (oylama dışında). –
[meteor-akışları] (http: //arunoda.github.io/meteor-stream /) paketi artık korunmuyor, ancak bu tür bir işlevsellik elde etmenin gerçekten iyi bir yolu ve hala iyi çalışıyor. – richsilv
Gerçekten meteor akışlarını işe yaramadı. Sağlanan terminal komutuyla yükledim ve daha sonra örneği koduma kopyalayıp yapıştırdım. Oluşturulmakta olan nesneyi görebiliyorum, ama gerçek "yayma" ve "açık" yöntemleri kesinlikle yanıt vermiyor. "İletide" olayını asla tetiklemez. – Kich867