PHP ile bir Apache sunucu iPhone'dan bir soket bağlantısı kurmak ve nasıl iletişim?

3 Cevap php

Ben bir lamba sunucuya bağlı bir iPhone oyunu üzerinde çalışıyorum. Ben apache server iphone için bir olay gönderdiğinde dayalı bir "olay" sistem oluşturmak istiyorum.

Bunun için, ben apache sunucusunun port 80 bağlanmak için "CFStreamCreatePairWithSocketToHost" kullanarak düşünüyorum.

Ben başarılı bir sunucuya bağlanmak ve bir okuma açın ve iPhone üzerinden akışı yazmak mümkün, ama ben iPhone LAMP sunucudan çalışan PHP kullanarak iphone veri göndermek için nasıl emin değilim.

Ben bir soket bağlantısı açmak ve bu sokete veri yazmak için php fsockopen kullanabilirsiniz düşünüyorum. Bu kod yorgun çalışan

    $fp = fsockopen("tcp://localhost", 80, $errno, $errstr); 
     if (!$fp) {
      echo "ERROR: $errno - $errstr<br />\n";
    } else {

echo"writing to socket
"; fwrite($fp, "wwqeqweqw eqwe qwe \n");

//echo fread($fp, 26);
fclose($fp);
echo "done";
   }

Ama bunu gerçekleştirmek için nasıl bir fikrin ne oluyor .. bir şey iphone okunan görmüyorum ya?

Teşekkürler!

3 Cevap

Mmm, gelen bağlantıları dinlemek için PHP kullanarak bunun için inşa ne gerçekten değil, alt uygunudur. , "Normal" HTTP tabanlı iletişim kanallarını kullanarak bir URL düz istekte ve tercih ne olursa olsun biçiminde döndürülen veri ayrıştırma yolu yok mu?

Neyse, check out

HTTP gerçekten bir akış protokolü değil, istekleri göndermek ve ondan tepkiler almak. Sen apache / php bu şartı yerine getirmek için başka bir şeye bakmak isteyebilirsiniz

... Ya Pekka en tavsiye kulak ve basit bir istek yanıtları aşağı ihtiyaçlarınızı bölünürler. yani ben ağ veya programcı onun çok hoş değil, ama onun bir possability olarak bu savunan değilim dikkat ... işlemek için iphone için bekleyen herhangi bir veri olup olmadığını görmek için düzenli aralıklarla sunucu yoklar.

(Ancak oku dilerlerse bile bir PHP komut dosyası bu şekilde çalıştırabilirsiniz - Başka bir yolu iphone bağlanmak için belirli bir port üzerinde bağlantıları kabul, ve bu şekilde iletişim kuracaktır kendi servisini (apache kullanmayın) inşa etmektir Pekka) sağlanan bağlantıları.

Sunucu çevrimiçi muhtemelen iphone daha fazla olduğu gibi eğer iPhone uygulamaları arka planda çalıştırmak yok gibi ancak bu (biraz aptal - Yine başka bir yolu web sunucusu bağlanmak sizin iphone uygulama içine sunucusu oluşturmak için unjailbroken ve iphone 4.0) henüz kamuya serbest değildir.

:) Seçenekleri yok-daha az

Mat

Use a 'pull' instead of 'push' model...

Tarayıcılar genellikle vatansız olması için tasarlanmıştır. Senin tarif ettiğin ne yapmak için bu sınırlama etrafında değil, yolu vardır.

Sunucular never bir müşteriye 'itme' veri bekleniyor, çünkü. Yani sunucu genellikle değil, bir istemci, veri aktarmak için varlığı, konumu ve orta bilinçli olmak zorunda olacağı anlamına gelir.

Bunun yerine sunucu iPhone müşteriye olayı zorlamaya almaya çalışırken. Sunucu mağaza devlet var ve iPhone sık sık AJAX kullanarak uygulama devlet için yoklamak var.

Eğer sunucu ve istemci LAMP arasında doğrudan 1-1 bağlantısı olan bir app istiyorsanız / PHP size tarif ettiğin ne başarmak için sunucu ve iPhone hem çalışıyor olması LAMBASI gerekir çünkü gitmek için yanlış bir yoldur. IE, bir HTTP istemci için bir HTTP sunucusu, 'itme' veriler sadece istemciye sunucudan talep etti verileri dönebilirsiniz olamaz.