UdpConnectionTest.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. use Symfony\Component\Process\PhpProcess;
  3. use Workerman\Worker;
  4. $serverAddress = 'udp://127.0.0.1:6789';
  5. $process = null;
  6. beforeAll(function () use ($serverAddress, &$process) {
  7. $process = new PhpProcess(<<<PHP
  8. <?php
  9. if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
  10. if(!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
  11. if(!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
  12. require './vendor/autoload.php';
  13. use Workerman\Worker;
  14. \$server = new Worker('$serverAddress');
  15. \$server->onMessage = function (\$connection, \$data) {
  16. \$connection->send('received: '.\$data);
  17. };
  18. Worker::\$command = 'start';
  19. Worker::runAll();
  20. PHP
  21. );
  22. $process->start();
  23. sleep(1);
  24. });
  25. afterAll(function () use (&$process) {
  26. $process->stop();
  27. });
  28. it('tests udp connection', function () use ($serverAddress) {
  29. $socket = stream_socket_client($serverAddress, $errno, $errstr, 1);
  30. expect($errno)->toBeInt()->toBe(0);
  31. fwrite($socket, 'xiami');
  32. $data = fread($socket, 1024);
  33. expect($data)->toBeString('received: xiami');
  34. fclose($socket);
  35. })
  36. ->skipOnWindows('require posix'); //require posix