Ich bin ein Ratchet WebSocketServer in meinem Backend läuft dies alles funktioniert gut.Verbinden mit einem Ratschen Websocket-Server mit PHP
<?php
require '../vendor/autoload.php';
use Ratchet\WebSocket\WsServer;
use Ratchet\Http\HttpServer;
$wsServer = new WsServer(new Chat());
$wsServer->disableVersion(0);
$server = \Ratchet\Server\IoServer::factory(
new HttpServer(
$wsServer
),
8080
);
$server->run();
Aber ich möchte eine Verbindung zum Websocket mit einem einfachen PHP-Skript, um eine Nachricht an den Server zu senden.
$host = 'ws://localhost'; //where is the websocket server
$port = 8080;
$local = "http://example.com"; //url where this script run
$data = "first message"; //data to be send
$head = "GET/HTTP/1.1"."\r\n".
"Upgrade: WebSocket"."\r\n".
"Connection: Upgrade"."\r\n".
"Origin: $local"."\r\n".
"Host: $host:$port"."\r\n".
"Sec-WebSocket-Key: asdasdaas76da7sd6asd6as7d"."\r\n".
"Content-Length: ".strlen($data)."\r\n"."\r\n";
//WebSocket handshake
$sock = fsockopen($host, $port);
fwrite($sock, $head) or die('error:'.$errno.':'.$errstr);
$headers = fread($sock, 2000);
echo $headers;
fwrite($sock, $data) or die('error:'.$errno.':'.$errstr);
$wsdata = fread($sock, 2000);
fclose($sock);
Aber der Fehler, den ich erhalte, ist.
Dann wenn ich den Host ändern und nicht die ws: // und es sagt.
error:111:Connection refused
Hat jemand eine Idee, wie Daten zu einem laufenden Ratchet WebSocket Server aus einer einfachen PHP-Datei senden?
@ Raisin.can wir senden Byte-Array mit dieser Bibliothek über Websocket in PHP – iCoders
Die Bibliothek erwartet, dass die Funktion send() eine Zeichenfolge übergeben wird. Wenn Sie Ihren Server in PHP haben (z. B. Ratchet), könnten Sie einfach das Byte-Array auf dem Client serialisieren und der Server unserialisieren. Wenn nicht alle Nachrichten, die auf Ratchet empfangen werden, Byte-Arrays sein werden, sollten Sie diese Nachrichten wie Byte_Array: a: 44: {i: 1; i: 84; ...etc. – RaisinBranCrunch
ya, wenn ich selialize dann sein Senden als eine Zeichenfolge, aber für mich empfangende Seite ist nur Byte-Array, so kann nicht serialisieren. – iCoders