wan3574489 / laravel-websocket by wan3574489

基于laravel+swoole的webSocket开发库
129
35
3
Package Data
Maintainer Username: wan3574489
Maintainer Contact: 907515459@qq.com (W+)
Package Create Date: 2017-06-11
Package Last Update: 2018-11-22
Language: PHP
License: MIT
Last Refreshed: 2024-04-15 03:04:29
Package Statistics
Total Downloads: 129
Monthly Downloads: 1
Daily Downloads: 0
Total Stars: 35
Total Watchers: 3
Total Forks: 6
Total Open Issues: 0

laravel-websocket

基于 laravel + swoole +redis的WebSocket开发库。适合开发中小型webSocket程序。

无需关注webSocket的细节,专注业务。

可同步、异步处理请求,发送数据。

安装方法

  1. 安装laravel.

  2. 添加websocket库: composer require lactone/laravel-websocket

  3. 添加laravel command类,继承 webSocket\Commands\WebSocketCommand.

Demo

在目录/demo/laravel中是一个简单的Demo程序。

使用方法

  1. 将Demo目录中的文件覆盖到laravel程序中。
  2. 配置redis。
  3. 打开app/config/app.php,将默认的Redis服务提供器修改为websocket的Redis服务提供器,将Illuminate\Redis\RedisServiceProvider替换为\webSocket\Redis\RedisServiceProvider
  4. 打开app/config/websocket.php 文件,修改websocket的监听ip、端口和工作进程数量。
  5. 命令行执行:php artisan Chat:Start 开启websocket服务。

文件说明

App\Console\Commands\ChatWebSocketCommand.php 负责绑定启动命令、设置websocket的配置和绑定webSocket处理程序。

App\Server\Chat\ChatHandle.php 负责处理ws业务。当用户发送消息:{type:$type,data:$data}给服务器的时候,系统会自动调用message_$type方法。

public/js/push.js 客户端发送消息程序

基本概念

当客户端与服务端建立webSocket连接后,服务端会生成一个fd,该fd表示当前链接,通过该fd服务端可以发送消息给客户端。

数据交互

客户端发送给服务端结构如下:{type:type,data:data}
其中如果type为login,服务端接受程序信息后会调用message_login方法,处理信息。

常用API

webSocket\Service\PushService

PushService::pushToAllAsync($data) 发送信息给所有客户端
PushService::pushToFdAsync($fd,$data) 发送消息给某个客户端
PushService::pushToAllOutMeAsync($fd,$data) 发送消息给除开fd的其他客户端
PushService::getAllFdsFromStore() 获取所有在线的链接标识
PushService::isLive($fd) 客户端是否在线
PushService::success($action,$message = array()) 反馈成功的数据结构
PushService::error($action,$message = array()) 反馈失败的数据结构