2022-05-22|閱讀時間 ‧ 約 7 分鐘

Laravel 使用 Swoole 打造 WebSocket 服務

Swoole是一個使用C語言寫出來的PHP extension,本篇筆記了如何使用Laravel+Swoole來打造websocket應用,包含從伺服器安裝到基本範例程式,有websocket基本觀念後,再花點時間,就能把程式改成多人聊天室或私頻聊天等應用了。
  • 由於Swoole不支援Windows,以下操作皆是在linux(Ubuntu 22.04)系統環境下運作的。

Requirement
需先確認系統有安裝PHP與Nginx,本文是在此基礎環境下運作的。
$ sudo apt update
$ sudo apt upgrade
  • 安裝Nginx:
$ sudo apt install nginx
  • 安裝PHP:
$ sudo apt install php8.1-fpm php8.1 php-dev -y
$ php -v

安裝PHP swoole擴展
$ sudo pecl install swoole
  • 若找不到pecl指令,需先安裝:
$ sudo apt install php-pear
enable swoole:
  1. 打開php.ini:
$ sudo nano /etc/php/8.1/cli/php.ini
  • 可使用這個指令查看php.ini在哪:
$ php --ini
2. 在php.ini 檔案最後面加上:
extension=swoole.so
3. Restart php-fpm生效:
$ sudo service php8.1-fpm restart
查看swoole是否安裝成功:
$ php -m

安裝composer
  • 若無composer,需先安裝:
$ sudo apt install curl unzip
$ sudo apt install php-curl
$ curl -sS https://getcomposer.org/installer -o composer-setup.php
$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
$ composer -V

安裝Laravel Installer
  • 使用Composer安裝Laravel Installer:
$ composer global require "laravel/installer"
  • 將 composer bin folder 加入環境變數,這樣才能用laravel指令來建立專案:
$ nano $HOME/.bashrc
  • 在最下面加入:
$ export PATH="$PATH:$HOME/.config/composer/vendor/bin"
  • Reload .bashrc file:
$ source $HOME/.bashrc

建立Laravel新專案
  • 接著就能用laravel installer來建立Laravel新專案:
$ laravel new swoole_test

安裝laravel-swoole
  • 接著在swoole_test專案目錄下,安裝laraveltw/laravel-swoole:
$ composer require swooletw/laravel-swoole

撰寫Swoole websocket後端程式
  • 建立swoole命令:
$ php artisan make:command Swoole
會在app\Console\Command路徑下建立Swoole.php:
將code改成這樣:

撰寫Swoole websocket前端程式

啟動websocket server
$ php artisan swoole start
接著當client連線時,瀏覽器與server訊息如下圖:
  • fd: client的唯一識別ID

本筆記參考:
  1. https://www.jianshu.com/p/b5ee9f72fcd1
  2. https://learnku.com/articles/4633/with-supervisor-use-swoole-to-create-a-websocket-server-in-laravel
  3. https://learnku.com/articles/47250
  4. https://iter01.com/520130.html
  5. https://www.swoole.com/
  6. https://blog.albert-chen.com/php-with-swoole/
  7. https://www.cloudbooklet.com/how-to-install-lemp-stack-nginx-mysql-php-on-ubuntu-22-04/
  8. https://www.how2shout.com/linux/how-to-install-composer-on-ubuntu-22-04-20-04-lts/
  9. https://stackoverflow.com/questions/61395786/i-get-laravel-command-not-found-on-ubuntu-20-04
  10. https://wiki.swoole.com/#/environment

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.