Rumah rangka kerja php Workerman Cara menggunakan pekerja pekerja untuk menolak dan menerima mesej dalam masa nyata

Cara menggunakan pekerja pekerja untuk menolak dan menerima mesej dalam masa nyata

Sep 08, 2023 pm 01:42 PM
pekerja: Ini ialah rangka kerja soket php berprestasi tinggi Ia boleh mendengar acara tertentu

Cara menggunakan pekerja pekerja untuk menolak dan menerima mesej dalam masa nyata

Cara menggunakan pekerja pekerja untuk mencapai push masa nyata dan menerima mesej

Dengan perkembangan pesat Internet, push mesej masa nyata telah menjadi satu kemestian untuk banyak keperluan aplikasi. Dalam pelaksanaan sebelumnya, pelayan biasanya ditinjau untuk memeriksa sama ada terdapat mesej baharu dan kemudian ditolak. Kaedah ini bukan sahaja tidak cekap, tetapi juga meningkatkan beban pada pelayan. Kini, terdapat cara yang lebih cekap untuk melaksanakannya, iaitu menggunakan rangka kerja Workerman untuk mencapai tolakan dan penerimaan mesej masa nyata.

Workerman ialah rangka kerja PHP dipacu acara berprestasi tinggi yang direka untuk menyelesaikan masalah yang PHP tidak dapat mengekalkan sambungan yang panjang. Ia menggunakan pelaksanaan I/O tidak segerak tak segerak PHP dan boleh mengendalikan sejumlah besar sambungan serentak untuk mencapai tolakan dan penerimaan mesej masa nyata.

Berikut ialah langkah dan contoh kod untuk menggunakan pekerja pekerja untuk melaksanakan push dan menerima mesej masa nyata:

  1. Pasang workerman
  2. #🎜🎜🎜 ##🎜🎜 #Pertama, anda perlu memasang workererman pada pelayan. Anda boleh memasangnya menggunakan komposer dengan arahan berikut:

1

composer require workerman/workerman

Salin selepas log masuk

Buat pelayan push mesej
  1. Seterusnya, buat fail PHP bernama push_server. php, sebagai pelayan push mesej.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<?php

require_once __DIR__ . '/vendor/autoload.php';

 

use WorkermanWorker;

 

$pusher = new Worker();

$pusher->count = 4;

 

$pusher->onWorkerStart = function ($pusher) {

    $inner_ws = new Worker('websocket://127.0.0.1:8000');

     

    $inner_ws->onConnect = function ($connection) {

        echo "New client connected

";

    };

     

    $inner_ws->onMessage = function ($connection, $data) use ($pusher) {

        echo "Received message: $data

";

         

        // 接收到消息后,将消息推送给所有在线客户端

        foreach ($pusher->connections as $client) {

            $client->send($data);

        }

    };

     

    $inner_ws->onClose = function ($connection) {

        echo "Client closed

";

    };

     

    Worker::runAll();

};

Salin selepas log masuk

Buat pelayan penerima mesej
  1. Kemudian, cipta fail PHP bernama receive_server.php sebagai pelayan penerima mesej.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<?php

require_once __DIR__ . '/vendor/autoload.php';

 

use WorkermanWorker;

 

$receiver = new Worker();

$receiver->count = 4;

 

$receiver->onWorkerStart = function ($receiver) {

    $ws = new Worker('websocket://127.0.0.1:8001');

     

    $ws->onConnect = function ($connection) {

        echo "New client connected

";

    };

     

    $ws->onMessage = function ($connection, $data) {

        echo "Received message: $data

";

         

        // 处理接收到的消息

        // ...

    };

     

    $ws->onClose = function ($connection) {

        echo "Client closed

";

    };

     

    Worker::runAll();

};

Salin selepas log masuk

Mulakan pelayan
  1. Akhir sekali, mulakan pelayan push mesej dan pelayan penerima mesej masing-masing melalui baris arahan.

1

php push_server.php start

Salin selepas log masuk

1

php receive_server.php start

Salin selepas log masuk

Pada ketika ini, tolakan masa nyata dan penerimaan mesej selesai.

Dalam aplikasi sebenar, pengembangan dan pengoptimuman fungsi yang sepadan boleh dijalankan mengikut keperluan. Sebagai contoh, anda boleh menambah mekanisme pengesahan dan kebenaran untuk menyekat hanya pengguna yang disahkan untuk menolak dan menerima mesej anda juga boleh meneruskan mesej ke dalam pangkalan data supaya pengguna luar talian boleh menerima mesej mereka yang belum dibaca selepas mereka pergi dalam talian, dsb. tunggu.

Untuk meringkaskan, dengan menggunakan rangka kerja pekerja, kami boleh mencapai tolakan dan penerimaan mesej masa nyata yang cekap. Ciri tak segerak dan tidak menyekatnya membolehkan pelayan mengendalikan sejumlah besar sambungan serentak, sekali gus meningkatkan kecekapan penghantaran mesej. Saya harap artikel ini akan membantu anda memahami dan menggunakan workererman untuk mencapai push dan menerima mesej masa nyata.

Atas ialah kandungan terperinci Cara menggunakan pekerja pekerja untuk menolak dan menerima mesej dalam masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)