ws协议

目前Workerman的ws协议版本为13

workerman可以作为客户端通过ws协议发起websocket连接,连到远程websocket服务器,实现双向通讯。

注意:ws协议只能通过AsyncTcpConnection作为客户端使用,不能作为websocket服务端监听协议。也就是说以下写法是错误的。

  1. $worker = new Worker('ws://0.0.0.0:8080');

如果想workerman作为websocket服务端,请使用websocket协议

ws作为websocket客户端协议示例:

  1. use Workerman\Worker;
  2. use Workerman\Connection\AsyncTcpConnection;
  3. require_once __DIR__ . '/Workerman/Autoloader.php';
  4. $worker = new Worker();
  5. // 进程启动时
  6. $worker->onWorkerStart = function()
  7. {
  8. // 以websocket协议连接远程websocket服务器
  9. $ws_connection = new AsyncTcpConnection("ws://echo.websocket.org:80");
  10. // 连上后发送hello字符串
  11. $ws_connection->onConnect = function($connection){
  12. $connection->send('hello');
  13. };
  14. // 远程websocket服务器发来消息时
  15. $ws_connection->onMessage = function($connection, $data){
  16. echo "recv: $data\n";
  17. };
  18. // 连接上发生错误时,一般是连接远程websocket服务器失败错误
  19. $ws_connection->onError = function($connection, $code, $msg){
  20. echo "error: $msg\n";
  21. };
  22. // 当连接远程websocket服务器的连接断开时
  23. $ws_connection->onClose = function($connection){
  24. echo "connection closed\n";
  25. };
  26. // 设置好以上各种回调后,执行连接操作
  27. $ws_connection->connect();
  28. };
  29. Worker::runAll();