UdpConnectionTest.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. echo "\nUDP Test:\n", $process->getOutput();
  27. $process->stop();
  28. });
  29. it('tests udp connection', function () use ($serverAddress) {
  30. $socket = stream_socket_client($serverAddress, $errno, $errstr, 1);
  31. expect($errno)->toBeInt()->toBe(0);
  32. fwrite($socket, 'xiami');
  33. $data = fread($socket, 1024);
  34. expect($data)->toBeString('received: xiami');
  35. fclose($socket);
  36. })
  37. ->skipOnWindows(); //require posix