Temel Süreç

(Basit bir Websocket sohbet sunucusu örneği olarak)

1. İstediğiniz bir konumda proje dizini oluşturun

Örneğin SimpleChat/
Dizine gidin ve composer require workerman/workerman komutunu çalıştırın.

2. vendor/autoload.php dosyasını dahil edin (composer sonrası oluşturulur)

start.php dosyasını oluşturun ve vendor/autoload.php dosyasını dahil edin.

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

3. Protokolü seçin

Burada Text metin protokolünü seçiyoruz (Workerman'da özelleştirilmiş bir protokol, formatı metin + yeni satır).

(Şu anda Workerman HTTP, Websocket, Text metin protokollerini desteklemektedir. Eğer başka protokoller kullanmak gerekiyorsa, lütfen protokol bölümü altında kendi protokolünüzü geliştirin.)

4. Gereksinimlere göre giriş başlatma betiği yazın

Aşağıdaki örnek, basit bir sohbet odası için giriş dosyasıdır.

SimpleChat/start.php

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

$global_uid = 0;

// Müşteri bağlandığında uid atanır, bağlantı kaydedilir ve tüm müşterilere bildirilir
function handle_connection($connection)
{
    global $text_worker, $global_uid;
    // Bu bağlantıya bir uid atayın
    $connection->uid = ++$global_uid;
}

// Müşteri mesaj gönderdiğinde, tüm kullanıcılara iletilir
function handle_message(TcpConnection $connection, $data)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] dedi ki: $data");
    }
}

// Müşteri kapandığında, tüm müşterilere yayın yapar
function handle_close($connection)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] çıkış yaptı");
    }
}

// 2347 portunu dinleyen bir metin protokolü Worker oluşturun
$text_worker = new Worker("text://0.0.0.0:2347");

// Sadece 1 işlem başlatıyoruz, böylece müşteriler arasında veri aktarımı kolay olur
$text_worker->count = 1;

$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';

Worker::runAll();

5. Test

Text protokolünü denemek için telnet komutunu kullanabilirsiniz.

telnet 127.0.0.1 2347