stanislav-web/zf2-websocket-server-factory

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

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

This package is not auto-updated.

Last update: 2024-09-14 17:11:11 UTC


README

Alt text

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

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

要求

更改

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

这可能在下一个更新中修复。如果您写信给我,您总是可以向我提出这个模块的问题:问题

安装和运行服务器

  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

例如,您可以查看“聊天”实现的实现

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