İletişim Protokolünün Rolü

TCP akış tabanlı olduğundan, istemcinin gönderdiği istek verileri su akışı gibi sunucuya akar. Sunucu, verilerin geldiğini algıladığında, verilerin tamamlanıp tamamlanmadığını kontrol etmelidir çünkü sadece bir isteğin kısmi verileri sunucuya ulaşmış olabilir; hatta birden fazla isteğin bir arada ulaştığı durumlar da mümkündür. İsteğin tamamen ulaşıp ulaşmadığını veya bir arada gelen isteklerden ayırmanın nasıl yapılacağına karar vermek için bir iletişim protokolü belirlemek gereklidir.

Workerman'da Neden Protokol Belirlenmelidir?

Geleneksel PHP geliştirme esasen web tabanlıdır ve genellikle HTTP protokolüne dayanır. HTTP protokolünün analiz ve işleme süreci, WebServer tarafından bağımsız bir şekilde üstlenildiği için geliştiriciler protokol ile ilgili konuları düşünmezler. Ancak, HTTP dışındaki protokoller üzerinde geliştirme yapmamız gerektiğinde, geliştiricilerin protokollerle ilgili konuları da dikkate alması gerekecektir.

Workerman Tarafından Desteklenen Protokoller

Workerman halihazırda HTTP, websocket, text protokolleri (bkz. ek açıklaması), frame protokolü (bkz. ek açıklaması) ve ws protokolünü (bkz. ek açıklaması) desteklemektedir. Bu protokoller üzerinden iletişim kurmak gerektiğinde doğrudan kullanılabilir; kullanım yöntemi, Worker'ı başlatırken protokolün belirtilmesidir, örneğin

use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// websocket://0.0.0.0:2345, websocket protokolü ile 2345 portunu dinlediğini belirtir
$websocket_worker = new Worker('websocket://0.0.0.0:2345');

// text protokolü
$text_worker = new Worker('text://0.0.0.0:2346');

// frame protokolü
$frame_worker = new Worker('frame://0.0.0.0:2347');

// tcp Worker, doğrudan socket üzerinden aktarım yapar, herhangi bir uygulama katmanı protokolü kullanmaz
$tcp_worker = new Worker('tcp://0.0.0.0:2348');

// udp Worker, herhangi bir uygulama katmanı protokolü kullanmaz
$udp_worker = new Worker('udp://0.0.0.0:2349');

// unix domain Worker, herhangi bir uygulama katmanı protokolü kullanmaz
$unix_worker = new Worker('unix:///tmp/wm.sock');

Özelleştirilmiş İletişim Protokolünün Kullanılması

Workerman'ın sağladığı iletişim protokolleri, geliştirme ihtiyaçlarını karşılamıyorsa, geliştiriciler kendi iletişim protokollerini özelleştirebilir. Özelleştirme yöntemi için aşağıdaki bölüme bakınız.

Not:

Workerman, metin + yeni satır karakteri formatında bir text protokolü içermektedir. Text protokolü geliştirme ve hata ayıklama oldukça basittir, çoğu özelleştirilmiş protokol durumları için kullanılabilir ve telnet ile hata ayıklama desteği sunar. Geliştiriciler kendi uygulama protokollerini geliştirmek istediklerinde doğrudan text protokolünü kullanabilir, ayrıca ayrı bir geliştirme yapmaları gerekmez.

Text protokolü açıklamaları için bkz. "Ek Text Protokol Bölümü"