folospace / socketio
:描述
dev-master
2019-03-27 06:37 UTC
Requires
- illuminate/support: ~5
- predis/predis: ^1.1
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-09-27 19:07:23 UTC
README
一个简单的Laravel socketio服务器。
需要php包 predis。
需要php扩展 swoole。
安装
通过Composer
$ composer require folospace/socketio
使用
服务器命令
$ php artisan socketio start //start server $ php artisan socketio start --d //start server daemonize $ php artisan socketio stop //stop server $ php artisan socketio status //server status
注册事件
namespace App\Providers; use Folospace\Socketio\Facades\Socketio; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function register() { if (php_sapi_name() == 'cli') { Socketio::on('connection', function ($socket, $request) { print_r($request); echo 'connection:'.$socket->id.PHP_EOL; }); Socketio::on('disconnect', function ($socket) { echo 'disconnect:'.$socket->id.PHP_EOL; //$this->onLogout($socket->id); }); Socketio::on('login', function ($socket, $data) { $userId = $data['token']; //parse user id from client token if ($userId) { //Socketio::login($socket->id, $userId); $socket->emit('login', ['error_code' => 0, 'message' => 'login success']); } else { $socket->emit('login', ['error_code' => 1, 'message' => 'invalid token']); } }); Socketio::on('test', function ($socket, $data) { $socket->emit('test', 'hello there'); }); Socketio::on('private_event_with_ack', function ($socket, $data, $ack) { if (Socketio::getUserIdByClient($socket->id)) { //do sth after login. if ($ack) { $ack('done'); } } else { //disconnect guest. $socket->disconnect(); } }); } } }
测试
use Folospace\Socketio\Facades\Socketio; //after socket login, send data to user from anywhere Socketio::emitToUser($userId, 'test', ['message' => 'I am server']); //after server start, connect to local server Route::get('/', function () { $client = new \Folospace\Socketio\Foundation\SocketioClient('127.0.0.1', 3001); $client->emit('test', 'hello'); //sleep(3); $ret = $client->receive(); dd($ret); });
发布和修改配置
$ php artisan vendor:publish --provider="Folospace\Socketio\SocketioServiceProvider"
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息和使用清单,请参阅contributing.md。
安全性
如果您发现任何安全相关的问题,请通过电子邮件folospace@gmail.com联系,而不是使用问题跟踪器。
鸣谢
许可
MIT。有关更多信息,请参阅许可文件。