Temel Akış

(Bir basit WebSocket sohbet odası sunucusu örneği olarak)

1. Herhangi bir konumda proje dizini oluşturun

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

2. vendor/autoload.php dosyasını içe aktarın (Yükleyicinin oluşturduğu composer sonrası)

start.php dosyası oluşturun ve vendor/autoload.php dosyasını içe aktarın.

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

3. Protokol Seçimi

Burada Text metin protokolünü seçiyoruz (Workerman'de özel olarak metin+newline formatında bir protokol)

(Şu anda Workerman HTTP, WebSocket, Text metin protokolünü desteklemektedir. Diğer protokoller gerekiyorsa, kendi protokolünüzü geliştirmek için protokol bölümüne bakınız.)

4. Gereksinimlere Göre Ana Başlangıç Betiğini Yazın

Aşağıda, basit bir sohbet odasının giriş dosyası bulunmaktadır.

SimpleChat/start.php

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

$global_uid = 0;

// Bir istemci bağlandığında uid atayın ve bağlantıyı kaydedin ve tüm istemcilere bildirin
function handle_connection($connection)
{
    global $text_worker, $global_uid;
    // Bu bağlantıya bir uid atayın
    $connection->uid = ++$global_uid;
}

// İstemci mesaj gönderdiğinde, tüm kişilere iletin
function handle_message(TcpConnection $connection, $data)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] said: $data");
    }
}

// İstemci bağlantısı koptuğunda, tüm istemcilere yayınlayın
function handle_close($connection)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] logout");
    }
}

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

// Yalnızca 1 işlem başlatın, bu şekilde istemciler arasındaki veri iletimi daha 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ü telnet komutuyla test edilebilir

telnet 127.0.0.1 2347