2014-02-17 24 views
7

Ich bin nicht sicher, ob ich in der richtigen Weise bin. Ich möchte meinen Socket.IO-Server beibehalten und keinen separaten HTTP-Server innerhalb des Knotens erstellen. Kann ich damit einen PHP-Client erstellen, der Daten (z. B. Player kauft Artikel aus dem Online-Shop) direkt an den Knoten Socket.IO-Server senden kann?PHP sendende Nachricht an Node/Socket.IO Server

Ich habe mit dieser begonnen:

<?php 

class communicator { 
    public function connect($address, $port){ 
     $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 

     if($socket){ 
      try { 
       socket_connect($socket, $address, $port); 
      } catch(Exception $e){ 
       throw new Exception($e->getMessage()); 
      } 
     }else{ 
      throw new Exception('Could not create socket.'); 
     } 
} 

?> 

Die Buchse gerade fein mit dem Knoten-Server zu verbinden scheint, aber wie kann ich Daten beginnen direkt vom PHP-Client empfangen?

Zum Beispiel: Sagen wir, ich verwende socket_write, um eine Nachricht an den Server zu senden. Wie bekomme ich das über Socket.IO?

Hope meine Frage ergibt Sinn!

Antwort

4

ich verwende http://elephant.io/ für die Kommunikation zwischen php und socket.io, ich habe nur Probleme mit der Zeit, Verbindung herzustellen, 3 oder 4 Sekunden, um das Senden von Daten abzuschließen.

<?php 

require(__DIR__ . '/ElephantIO/Client.php'); 
use ElephantIO\Client as ElephantIOClient; 

$elephant = new ElephantIOClient('http://localhost:8080', 'socket.io', 1, false, true, true); 

$elephant->init(); 
$elephant->emit('message', 'foo'); 
$elephant->close(); 
+0

Ja, es ist Verzögerung oder nichts senden. Hast du das jemals versucht? https://github.com/rase-/socket.io-php-emitter Wenn versucht, wie ist es mit elephant.io vergleichen? – vee

3

Mit der neuesten Version von ElephantIO, ich habe es geschafft, mit einer Nachricht senden:

include_once("vendor/autoload.php"); 
use ElephantIO\Exception\ServerConnectionFailureException; 

$client = new \ElephantIO\Client(new \ElephantIO\Engine\SocketIO\Version1X('http://localhost:9000')); 

try 
{ 
    $client->initialize(); 
    $client->emit('message', ['title' => 'test']); 
    $client->close(); 
} 
catch (ServerConnectionFailureException $e) 
{ 
    echo 'Server Connection Failure!!'; 
} 
Verwandte Themen