ws protokolü
Şu anda Workerman'ın ws protokolü versiyonu 13'tür.
Workerman istemci olarak, ws protokolü aracılığıyla websocket bağlantısı başlatarak uzaktaki websocket sunucusuna bağlanabilir ve çift yönlü iletişim gerçekleştirebilir.
Dikkat
ws protokolü yalnızca AsyncTcpConnection ile istemci olarak kullanılabilir, websocket sunucusu olarak dinlenemez. Yani aşağıdaki yazım yanlıştır.
$worker = new Worker('ws://0.0.0.0:8080');
Workerman'ı websocket sunucusu olarak kullanmak istiyorsanız, lütfen websocket protokolünü kullanın.
Ws bir websocket istemci protokolü örneği:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Protocols\Ws;
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
$worker = new Worker();
// Süreç başlatıldığında
$worker->onWorkerStart = function()
{
// Websocket protokolü ile uzaktaki websocket sunucusuna bağlan
$ws_connection = new AsyncTcpConnection("ws://127.0.0.1:1234");
// Her 55 saniyede bir sunucuya opcode'u 0x9 olan websocket kalp atışı gönder (isteğe bağlı)
$ws_connection->websocketPingInterval = 55;
// HTTP başlıklarını ayarlayın (isteğe bağlı)
$ws_connection->headers = [
'Cookie' => 'PHPSID=82u98fjhakfusuanfnahfi; token=2hf9a929jhfihaf9i',
'OtherKey' => 'values'
];
// Veri türünü ayarlayın (isteğe bağlı)
$ws_connection->websocketType = Ws::BINARY_TYPE_BLOB; // BINARY_TYPE_BLOB metin için, BINARY_TYPE_ARRAYBUFFER ikili için
// TCP üçlü el sıkışması tamamlandığında (isteğe bağlı)
$ws_connection->onConnect = function($connection){
echo "tcp bağlı\n";
};
// Websocket el sıkışması tamamlandığında (isteğe bağlı)
$ws_connection->onWebSocketConnect = function(AsyncTcpConnection $con, $response) {
echo $response;
$con->send('merhaba');
};
// Uzaktaki websocket sunucusundan mesaj geldiğinde
$ws_connection->onMessage = function($connection, $data){
echo "alındı: $data\n";
};
// Bağlantıda hata oluştuğunda, genellikle uzaktaki websocket sunucusuna bağlanma hatası (isteğe bağlı)
$ws_connection->onError = function($connection, $code, $msg){
echo "hata: $msg\n";
};
// Uzaktaki websocket sunucusuyla bağlantı kesildiğinde (isteğe bağlı, yeniden bağlanma önerilir)
$ws_connection->onClose = function($connection){
echo "bağlantı kapandı ve yeniden bağlanmaya çalışılıyor\n";
// Bağlantı kesilirse, 1 saniye sonra yeniden bağlan
$connection->reConnect(1);
};
// Yukarıdaki çeşitli geri çağrıları ayarladıktan sonra, bağlantı işlemini gerçekleştir
$ws_connection->connect();
};
Worker::runAll();
Daha fazla bilgi için ws/wss istemcisi olarak bakın.