Bir ben gerçek zamanlı tarayıcı tabanlı bir oyun için AMQP veya XMPP seçmeliyim?

3 Cevap php

Gerçek-zamanlı turn-tabanlı oyun powered benim tarayıcı tabanlı flash ücretsiz javascript için XMPP (ejabberd) vs AMQP (RabbitMQ) arasında seçiyorum. Ben AMQP ve XMPP protokolü hakkında çok şey bilmiyorum. Ben kullanıcı yetkilendirme için PHP kullanmak istiyorum ve bazı veri MySQL ile mağaza almak. Bildiğim kadarıyla ben öğrendim gibi, RabbitMQ PHP müşterileri var ama ejabberd değil.

Ne anladım javascript müşteri PHP komut dosyası çağırır ve gerekli işleme işlemek ve daha sonra rakip oyuncuya veri geçmek AMQP veya XMPP sunucuya geçirmek olduğunu. Wrox iyi bir kitap 'JS ve jQuery ile Pro XMPP Programlama' var ama PHP ile hiçbir örnek yoktur. Yani benim sorular şunlardır.

1) benim oyun için uygun Hangi protokol nedir?

2) Ben seçeyim RabbitMQ sadece PHP istemci desteği bulunuyor için?

3 Cevap

Ben XMPP Bosh HTTP Bind yaklaşımı kullanarak JavaScript bir XMPP istemcisi uygulama oldukça iyi bir başarı elde ettik. Ben AMQP hakkında bilmiyorum, ama istemci tarafında erişimi için, ben XMPP seviyorum. Bir kaç kelime neden.

ejabberd zaten Bosh desteği içerir ve JavaScript (ve muhtemelen Flaş) ile kullanmak için sadece HTTP istekleri dinlemek için ejabberd yapılandırmak hangi noktasına isteklerini yönlendirmek için sunucu doğrudan gerek. (Ve hatta bu bugünün tarayıcılarda JavaScript güvenlik modeli farklı etki ve hatta farklı limanlarına JavaScript isteklerini yasaklamaktadır çünkü sadece.)

XMPP oldukça önemsiz küçük XML belgelerinin bir demet olduğundan, seçtiğiniz herhangi bir dilde onları kodlamak oldukça kolay olmalıdır.

Yaygın olarak desteklenen bu yana, onlar kesinlikle takdir edecektir servis, kayıt için kullanıcılar gerektiren önlemek mümkün olabilir.

XMPP uygulamak size trivially (Google Talk dahil) Jabber ağın geri kalanı için federationing ile, oyunun anlık mesajlaşma desteği eklemek anlamına gelir.

Ben AMQP hakkında hiçbir şey bilmiyorum, çünkü ben bunları karşılaştırmak değil - ama her zaman ilk benim gelecekteki çok oyunculu projeler için XMPP dikkate edeceğiz niçin diyebilirim.


Seçmek için benim kişisel neden ejabberd basittir - yüklemek ve Debian üzerinde yapılandırmak için süper kolay. Ben Erlang ve Java ile neredeyse tamamen yabancı değilim; ne Erlang hakkında, ancak, anlamak bunu başarmak için ölçeklenebilirlik kolay olduğunu, ve ejabberd insanlar bunu elde söylüyorlar.

Eğer sunucu tarafı mantık denetimi yapmak istiyorsanız, ben iyi bir yöntem bilmiyorum korkuyorum. Sonra yerine sadece Apache mod_rewrite yoluyla iletme, sunucuya yönlendirme, gelen XMPP Bosh mesajı kontrol aklı yaparken bir proxy PHP ile gitmek istiyorum.

Yukarıda belirtildiği gibi XMPP sunucusu "ana" web sunucusu farklı bir port dinleme çünkü, kesinlikle (mod_rewrite ile veya PHP ile veya başka bir şekilde) çeşit vekili yapmak zorunda olacak, ve Javascript çapraz etki alanı güvenlik modeli, farklı bir bağlantı noktasına XMLHTTPRequest yaptığını izin vermez.

Seçtiğiniz XMPP sunucusuna Bosh istekleri geçişi sırasında Yani, aklı kontrol kolay yapılabilir. Sunucu yazılımının içine kazma çeklerin bu tür yapmak için en iyi yol olmayabilir. Uzun alacağını ve muhtemelen oyunun geri kalanı ile entegre etmek zor olur.

Alternatif olarak, ben XMPP components and ejabberd modules bahseder cevap tökezledi. Bu da, benim için ilginç bir okuma olacaktır.

İyi şanslar, ve bitti oyunun adı ile bir yorum bırakın emin olun - Ben :-) görmek isteriz


Ben sadece bir başkası senin için bir very similar question yayınlanmıştır fark ettim. Onun cevaplar sizin için biraz daha ilginç bilgi içerir.


Flash ile XMPP kullanımı hakkında:

Sen yine de Flash ile (Bosh) bağlama HTTP kullanabilirsiniz. Aslında, HTTP bağlama sırasında böyle sık mola mobil bağlantıları gibi uygulamalar, çeşitli için tasarlanmıştı, Javascript XMPP erişmenizi sağlar.

Ben çoğunlukla web tabanlı istemci JWChat ve (Bosh hakkında bilgi için) ejabberd, ve sonra (protokolün kendisi hakkında bilgi için) çapraz-platform istemci PSi'ye ve ejabberd arasındaki iletişim arasındaki iletişimi gözlemleyerek bağlantı kurmak için nasıl anladım. JWChat ve WebKit Web Müfettiş veya Firefox için Firebug ile kolayca sunucu doğru yapılıyor XMLHttpRequest'lerinin izleyebilirsiniz. Psi ile, bir XML konsol açmak ve iletişim günlüğünü okuyabilirsiniz. , Sizin seçtiğiniz bir dilde bir müşteri prototip Bosh eğitim ve XMPP çok kolay olduğu ortaya çıktı ile birlikte.

Aynı zamanda, aşağıdaki XEPs yararlıdır: XEP-0124, XEP-0206.

Şu anda okuyorum O'Reilly kitabı, "XMPP: The Definitive Guide" (P. Saint-Andre, Kevin Smith, Remko Troncon; çok ucuz on Apple's App Store) da "size hissi verir neden şeyler onlar "olan yol ve küçük şeyler ve XMPP çeşitli uygulamaları birçok belge yapılır.

Bundan sonra, bir Bosh-tabanlı istemci uygulama oldukça kolay olduğu ortaya dönüşebilir. Ben ayrı bir düğme oyun ve duraklama yapmaktan Flash ile kodlama ile hiçbir deneyimi var, bu yüzden :-) inanmayarak bu almak

Birisi de belirtildiği gibi, istemci-sunucu kısmını dikkate almak gerekir; bu daha önemli görünmektedir.

Zaten konuyla ilgili iyi kitap (Jack Moffit en XMPP + JS kitap) var ve ben kesinlikle bu ile gitmek teknolojisi söyleyebilirim gibi geliyor.

Ayrıca kitap anlatacağım gibi, kullanıcı kimlik doğrulama, şifreleme ve bunun üzerine tüm pek XMPP protokol uzantıları alabilirsiniz.

Ben herhangi bir PHP-XMPP müşterilerine tavsiye edemez bile olsa, ben mutlaka out-of-the-box AMQP şekil ile aynı düzeyde olurdu sanmıyorum.

Also, if you're versed in other languages, and depending on the amount of game logic required, you could write an XMPP server component. See this prior question about XMPP + gaming for info:
http://stackoverflow.com/questions/2122394/xmpp-c-interaction

AMQP henüz 1.0 sürümünü ulaştı ve çevresindeki bazı olası tasarım sorunları var değil. Ben olsam verirdim yani PHP için XMPP müşterileri vardır bir deneyin ilk olduğunu.