PHP Jabber Aptal soru

3 Cevap php

Ne yapıyorum ben kesinlikle doğru olup olmadığından emin değilim. Ama burada gider:

  1. Kullanıcı, web-tabanlı arayüz üzerinden sohbet içine girişler
  2. Kullanıcı Comet yoluyla güncellemeleri bilgilendirilir
  3. Kullanıcı ayrıca Jabber sunucusuna bağlanan bir PHP dosyasını Goto ayrıntılarını girer

Şimdi sorun olduğunu kullanıcı i jabber sunucusuna bağlanmak ve mesajı göndermek hangi bir mesaj basit, çalıştırmak php göndermek istediğinde. Ben bir mesaj bekliyorum zaman sorun ortaya çıkar. Ben giriş Çünkü eğer ve diğer kullanıcıların Ben bağlantısız görünecektir sonunda üzerine, mesajlar ve bağlantıyı kontrol edin.

Ben yanlış bir şekilde bu sorunu yaklaşıyor muyum? Ben yerine doğrudan arasında bir PHP tabakasının (javascript ile) Jabber sunucusuna bağlamak gerekir? PHP ile mesajları almak nasıl?

Zaman ayırdığınız için teşekkür ederiz.

3 Cevap

Bu http ile içsel bir sorun (veya özellik) - hiçbir kalıcı bağlantı (gerçekten) vardır. Eğer bir çözüm gerek, hiçbir gerçek çözüm yoktur.

Eğer java veya flash ile bunu yapabilirdi, ama bu (javascript 4TW!) gerçekten güzel değil.

diğer olasılık webserver ve jabber sunucu arasındaki bağlantıları tarayıcı ve web sunucusu arasındaki bağlantıları çevirir ne bir ara istemci oluşturmak olacaktır. messy, but possible.

ya da belki bu yardımcı olan bir API var.

directly connecting to the jabber server via javascript
i possibly slept through the latest ajax-inventions, but afaik you can only communicate with the host the source-html file comes from (ignoring greasmonkey and addons). no different domains, no different ports, period. unless you're going to teach your jabber server how to serve your chatpage-html to the browser, this will get problematic. moreover, staying connected doesn't even work, because that would require multipart-responses. those are only supported by mozilla, and this is why the ugly duckling COMET even exists in the first place. comet itself is a workaround to avoid the inability to hold connections while transfering data.

Ben bunu denemedim, ama xmpphp bakmak isteyebilirsiniz. İkincisi, sürece onlar web sitenize giriş yaptığınız gibi için XMPP sunucusu (aka bir Jabber sunucusu) için oturum açmış kullanıcı tutarak düşünebilirsiniz. Muhtemelen onlar web sitenize bırakın ve geri gelme durumunda bazı tür bir zaman aşımı var istiyorum.

JavaScript ile bağlantı olup olmadığını ya da değil gibi, ben neden yapamadım görmüyorum. Ben size basit gibi görünüyor ne olursa olsun gitmek öneririz. Bunu ben dava için hakkında iyi şeyler duymak Strophe, hangi kontrol etmek isteyebilirsiniz.

headstock olsa ben yoğun kullandım, ama bu python ve Kamaelia kullanarak gerektirir sadece XMPP kütüphanesi.

Yani sorun, bildiğim kadarıyla söyleyebilirim, diğer ucunda Jabber kullanıcı yanıt zaman olduğunu. Orada sorun, en azından kısmen, kullanıcı Jabber sunucusunda başka bir kullanıcıya cevap verdiğini, henüz php komut dosyası bu yanıtı komut beri mantıklı (bağlantıyı açık tutma olmadan yer almıştır farkında olmak istiyorum artık muhtemelen), çalışıyor.

Bir seçenek, gerçekten saçma bir de olsa, bir:

  • Gönderme ve sayfanızda kullanıcı için alan hem Jabber sunucusuna bağlantı için aracılık bir php script var,

  • Kullanıcı için iletileri göndermek için AJAX kullanın (AJAX yukarıdaki komut işaret ediyorum, komut mesajı göndermek istiyorsunuz.)

  • Mesaj olup olmadığını görmek için kontrol, aynı komut dosyası şimdiye kadar 10 saniye kadar ping bir JavaScript sonsuz döngü var. Varsa, bunlar kullanıcıya istemci ve çıkış geri geçmiş olsun.

Yukarıda sadece iki konu vardır:

Mesajı iletildiğinde kullanıcı bağlı değilse 1), php script hala göreceksiniz / mesajı alıyorum?

2) ajax isteklerini her 3 saniyede yapar Bir istemci tarafı döngü muhtemelen büyük bir drenaj olacaktır.

Çözüm 2:

OpenFire jabber sunucusu. Bu yerleşik bir web chat istemcisi ile birlikte geliyor ve müşteri ucunda HTML tabanlı sohbetler işlemek içindir özel buton adlı bir addon var (çok destek sayfalarında "Şimdi bir ajan ile sohbet!" Özelliği gibi.)

Biz işte bu kullanabilir ve çok özelleştirilebilir, (onların bir giriş kullanıcı ayrıntıları doldurur, ya da bazı özel avatar, ya da her türlü ekler bir komut dosyası istiyorsanız, örneğin) diğer komut ile entegre edilebilir, ve (OpenFire ) bu ne istediğiniz değil ise, muhtemelen sizin için ne arıyorsanız var, diğer uzantıları ve addons ton vardır.