stanislav-web / zf2-websocket-server-factory
ZF2 PHP WebSocket Server Factory v2.1 (扩展版)
Requires
- php: >=5.4
- zendframework/zendframework: >=2.4.0
This package is not auto-updated.
Last update: 2024-09-14 17:11:11 UTC
README
WebSocket (标准RFC 6455)协议旨在解决任何问题并消除浏览器和服务器之间通信的限制。它允许您将任何数据传输到任何域,安全且几乎无需不必要的网络流量。
此模块的主要优势是您可以根据Zend Framework 2创建各种应用,其中需要实现持久连接。通过一个接口,您可以创建各种应用并在同一服务器上运行它们。您可以组织聊天、监控网站实时访问、创建实时统计数据并将其保存到数据库(MySQL、Mongo等),还可以组织类似于Google的邮政服务。是的,什么都可以!
要求
- PHP 5.4+
- Zend Framework 2.4 >
更改
v2.2.1 [来自AdamiecRadek的请求]
- 添加了更改默认应用程序命名空间的支持
- 添加了对应用程序多个命名空间的支持
- 为config中的适当索引添加了热修复
v2.1.1
- 修复了从ApplicationFactory v2.1获取的服务定位器
- 从控制台选择客户端应用程序,例如:
php -q index.php websocket open <app>
v2.0
- 添加“聊天”应用作为示例
- 更高级的界面
- 能够创建多个应用程序并将它们绑定到同一服务器
- 每个ping服务器的详细日志
- 设置服务器连接数上限和每个IP的连接数上限
- 预定义Linux、Win平台的响应错误(扩展了它们的描述)
- 使用控制帧如PING PONG进行ping
v1.3
- 添加记录器
v1.2
- 添加了详细的转换器(调试显示/隐藏)(@see module.config.php)
- 添加了套接字函数的异常处理程序
- 修复了CLI stdout编码问题
- 添加了用于在视图中简单获取服务器配置参数的ViewHelper
<?php
// for example
echo $this->socket()->config('host'); // print 127.0.0.1
?>
v1.1.2
- 启动服务器时的控制台stdout输出
v1.1
- 修复了一些启动问题
- 添加了控制台命令界面,用于执行自定义系统命令(例如)
php -q index.php websocket system "whoami"
(注意:对于ZF2.2): 如果启动控制台服务器时遇到异常Notice Undefined offset: 0
,请按照以下操作
vendor\ZF2\library\Zend\Mvc\View\Console\RouteNotFoundStrategy.php
381行,将其替换为
<?php
$result .= isset($row[0]) ? $row[0] . "\n" : '';
?>
这可能在下一个更新中修复。如果您写信给我,您总是可以向我提出这个模块的问题:问题
安装和运行服务器
- 首先通过composer更新依赖。然后运行更新依赖项和更新自动加载器
php composer.phar require stanislav-web/zf2-websocket-server-factory
php composer.phar install -o
-
需要做的是将其添加到应用程序的激活模块列表中。在application.config.php中添加模块"WebSockets"
-
执行模块配置文件module.config.php
-
转到您的shell命令行界面,并输入(以后台运行服务器):
php -q index.php websocket open <app>
(app类似于您的客户端应用程序) -
设置您的客户端脚本以与服务器通信 .. ws://host:port/websocket/open/
我该如何创建应用程序?
您可以根据接口规则创建新应用程序
src\WebSockets\Aware\ApplicationInterface.php
例如,您可以查看“聊天”实现的实现
src\WebSockets\Application\Chat.php
然后从您的cli控制器调用服务器
<?php
// get factory container
$factory = new ApplicationFactory($this->getServiceLocator());
// applications from response <app>
// get it @see /src/WebSockets/Application/Chat.php etc..
$client = $request->getParam('app');
$app = $factory->dispatch(ucfirst($client));
// bind events from application
// ! must be implements of your every new Application
$app->bind('open', 'onOpen');
$app->bind('message', 'onMessage');
$app->bind('close', 'onClose');
// running server
$app->run();
?>
为了开始使用此模块,请在您的供应商目录中克隆仓库或如果您已经在项目中使用git,将其添加为子模块:git clone https://github.com/stanislav-web/ZF2-PHP-WebSocket-Server-Factory.git vendor/WebSockets 或 git submodule add git clone https://github.com/stanislav-web/ZF2-PHP-WebSocket-Server-Factory.git vendor/WebSockets
该模块也将很快作为Composer包提供。