hoa/websocket

该包已废弃,不再维护。未建议替代包。

Hoa\Websocket 库。

3.17.01.09 2017-01-09 13:53 UTC

README

Hoa

Build status Code coverage Packagist License

Hoa 是一组 模块化可扩展结构化 的 PHP 库。
此外,Hoa 致力于成为工业和研究世界之间的桥梁。

Hoa\Websocket

Help on IRC Help on Gitter Documentation Board

此库允许操作 WebSocket 协议,并提供服务器和客户端。它支持两个规范 RFC6455Hybi(同时)。

了解更多.

安装

使用 Composer,要将此库添加到依赖项中,您需要要求 hoa/websocket

$ composer require hoa/websocket '~3.0'

有关更多安装过程,请参阅 源代码页面

测试

在运行测试套件之前,必须安装开发依赖项

$ composer install

然后,要运行所有测试套件

$ vendor/bin/hoa test:run

有关更多信息,请参阅 贡献指南

快速使用

作为一个快速概述,我们建议启动一个 WebSocket 服务器并回显消息。类 Hoa\Websocket\Server 提供了六个监听器:openmessagebinary-messagepingcloseerror。因此

$websocket = new Hoa\Websocket\Server(
    new Hoa\Socket\Server('ws://127.0.0.1:8889')
);
$websocket->on('open', function (Hoa\Event\Bucket $bucket) {
    echo 'new connection', "\n";

    return;
});
$websocket->on('message', function (Hoa\Event\Bucket $bucket) {
    $data = $bucket->getData();
    echo '> message ', $data['message'], "\n";
    $bucket->getSource()->send($data['message']);
    echo '< echo', "\n";

    return;
});
$websocket->on('close', function (Hoa\Event\Bucket $bucket) {
    echo 'connection closed', "\n";

    return;
});
$websocket->run();

最后,我们需要用 HTML 和 Javascript 编写一个客户端

<input type="text" id="input" placeholder="Message…" />
<hr />
<pre id="output"></pre>

<script>
  var host   = 'ws://127.0.0.1:8889';
  var socket = null;
  var input  = document.getElementById('input');
  var output = document.getElementById('output');
  var print  = function (message) {
      var samp       = document.createElement('samp');
      samp.innerHTML = message + '\n';
      output.appendChild(samp);

      return;
  };

  input.addEventListener('keyup', function (evt) {
      if (13 === evt.keyCode) {
          var msg = input.value;

          if (!msg) {
              return;
          }

          try {
              socket.send(msg);
              input.value = '';
              input.focus();
          } catch (e) {
              console.log(e);
          }

          return;
      }
  });

  try {
      socket = new WebSocket(host);
      socket.onopen = function () {
          print('connection is opened');
          input.focus();

          return;
      };
      socket.onmessage = function (msg) {
          print(msg.data);

          return;
      };
      socket.onclose = function () {
          print('connection is closed');

          return;
      };
  } catch (e) {
      console.log(e);
  }
</script>

这里。所有发送的消息都会被回显。

Awecode

以下 awecodes 展示了此库的实际应用

  • Hoa\Websocket: 如何使用 Hoa\Websocket\ServerHoa\Websocket\Client?一个简单的示例将说明 WebSocket 协议

文档

《Hoa\Websocket》黑客手册 包含有关如何使用此库以及它如何工作的详细信息。

要本地生成文档,请执行以下命令

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

更多文档可以在项目的网站上找到: hoa-project.net

获取帮助

主要有两种方式可以获得帮助

贡献

你想贡献吗?谢谢!详细的 贡献指南 解释了你需要知道的一切。

许可证

Hoa项目采用新BSD许可证(BSD-3-Clause)。请参阅LICENSE获取详细信息。

相关项目

以下项目使用了这个库

  • Marvirc,一个简单、极度模块化和极快速度的IRC机器人,
  • WellCommerce,基于Symfony 3全栈框架的现代电子商务引擎。