échanger avec un Web Socket en PHP
Bonjour,
J'ai mis en place un Web Socket en me basant sur ce code :
http://code.google.com/p/phpwebsocke...ket/server.php
Il fonction très bien, j'arrive à échangé avec depuis mon Client JS.
Cependant j'aimerais pouvoir échangé avec depuis mon server en PHP.
J'ai trouvé un debut de solution sur ce topic:
http://stackoverflow.com/questions/5...ally-using-php
voici le code du coté de mon server PHP qui va interroger le WebSocket.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
$host = 'localhost'; //where is the websocket server
$port = 9876;
$local = "http://localhost/"; //url where this script run
$res = array('type' => 'alert', 'action' => "add", 'param'=> array( 'id'=> '2'));
$data = json_encode($res) ;
$head = "GET / HTTP/1.1"."\r\n".
"Upgrade: WebSocket"."\r\n".
"Connection: Upgrade"."\r\n".
"Origin: $local"."\r\n".
"Sec-WebSocket-Key: asdasdaas76da7sd6asd6as7d"."\r\n". //TODO Key unique
"Host: $host"."\r\n".
"Content-Length: ".strlen($data)."\r\n"."\r\n";
//WebSocket handshake
$sock = fsockopen($host, $port, $errno, $errstr, 2);
fwrite($sock, $head ) or die('error:'.$errno.':'.$errstr);
$headers = fread($sock, 2000);
fwrite($sock, "\x00$data\xff" ) or die('error:'.$errno.':'.$errstr);
$wsdata = fread($sock, 2000); //receives the data included in the websocket package "\x00DATA\xff"
fclose($sock); |
Mais il reste un problème, apparement le mask n'est correct dans le cote ci dessus.
Le server WebSocket reçoit bien les données mais la function unmask n'arrive pas à les récupérer...
Quelqu'un voit ce qui cloche dans mon code ?
Comment générer un mask correct ?
Je me demande même si je m'y prend correctement pour interrger mon WebSocket en PHP.
Merci pour votre temps.
Bonne journée