jasonrgd/zf2-websocket-server-factory

ZF2 PHP WebSocket Server Factory v2.1 (扩展版)

v2.2.1-stable 2015-05-19 21:18 UTC

This package is auto-updated.

Last update: 2024-09-10 20:23:11 UTC


README

Alt text

WebSocket协议(标准RFC 6455)旨在解决任何问题并消除浏览器和服务器之间通信的限制。它允许您将任何数据传输到任何域,安全且几乎无需不必要的网络流量。

此模块的主要优点是,您可以根据Zend Framework 2创建各种应用程序,其中需要实现持久连接。通过一个接口,您可以创建各种应用程序并在同一服务器上运行它们。您可以组织聊天、监控网站实时访问、创建实时统计并将其保存到数据库(MySQL、Mongo等),可以组织类似于Google的邮政服务。是的,什么都可以!

需求

变更

v2.2.1 [来自AdamiecRadek的请求]

  • 添加了更改默认应用程序命名空间的支持
  • 添加了为应用程序支持多个命名空间的支持
  • 针对配置中正确索引的热修复

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" : '';
?>

这可能在下一个更新中得到修复。如果您给我发问题,我随时可以为您解答此模块

安装和运行服务器

  1. 首先通过composer更新您的依赖项。然后运行以更新依赖项和自动加载器
php composer.phar require stanislav-web/zf2-websocket-server-factory
php composer.phar install -o
  1. 需要执行的操作是将它添加到您的应用程序活动模块列表中。在application.config.php中添加模块"WebSockets"

  2. 执行模块配置文件module.config.php

  3. 转到您的shell命令行界面,并键入(作为后台运行服务器):php -q index.php websocket open <app>(app类似于您的客户端应用程序)

  4. 设置您的客户端脚本以与服务器通信 .. ws://host:port/websocket/open/

我如何进行应用程序?

您可以根据接口规则创建新应用程序

src\WebSockets\Aware\ApplicationInterface.php

例如,您可以看到"Chat"实现的实现

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包提供。

使用的库

Alt text