## 客户端测试 (JavaScript) **1. 启动 mix-websocketd 服务** ~~~ php mix-websocketd start -c ../applications/websocket/config/websocketd.php ~~~ **2. 将下面代码另存为一个 HTML 文件,在 Chrome 调试模式的 Console 窗口中调试** ~~~ <html> <head> <title>WebSocket</title> </head> <body> <script> var webSocket = function () { ws = new WebSocket("ws://www.test.com/websocket"); ws.onopen = function() { console.log("连接成功"); }; ws.onmessage = function(e) { console.log("收到服务端的消息:" + e.data); }; ws.onclose = function() { console.log("连接关闭"); }; }; webSocket(); </script> </body> </html> ~~~ **4. 开始测试** >[success] 加入房间范例代码测试。 在 Console 窗口中输入: ~~~ ws.send('{"method":"join.room","params":{"roomid":1010},"id":1}'); ~~~ 会收到以下响应: ~~~ 收到服务端的文本消息:{"result":{"message":" 加入 1010 房间."},"id":1} ~~~ >[success] 发送消息给用户范例代码测试。 在 Console 窗口中输入: ~~~ ws.send('{"method":"message.emit","params":{"message":"hidfsdfsdfasdfsdfasdfasdfasdfasdfsdf"},"id":2}'); ~~~ 会收到以下响应: ~~~ 收到服务端的文本消息:{"result":{"message":"hidfsdfsdfasdfsdfasdfasdfasdfasdfsdf"},"id":2} ~~~ ## 客户端测试 (Swoole) Swoole 本身提供了 [协程版本的客户端](https://wiki.swoole.com/wiki/page/868.html),因为高度封装,所以 mix 就不封装了,用户可直接在 mix 中使用,下面是一个 原生 DEMO。 >[danger] 当在 mix 中使用下面代码时,需将 go 修改为 xgo 将下面代码保存为 `client.php` ~~~ go(function () { $cli = new \Swoole\Coroutine\http\Client("127.0.0.1", 9502); $ret = $cli->upgrade("/websocket"); if ($ret) { $cli->push('{"method":"join.room","params":{"roomid":1010},"id":1}'); while (true) { $data = $cli->recv(); if ($data === false) { echo "disconnect" . PHP_EOL; break; } var_dump($data); } } }); ~~~ **1. 启动 mix-websocketd 服务** ~~~ php mix-websocketd start -c ../applications/websocket/config/websocketd.php ~~~ **2. 执行 `client.php`** ~~~ php client.php ~~~ 接收到加入成功的消息: ~~~ [root@localhost data]# php client.php object(Swoole\WebSocket\Frame)#3 (4) { ["fd"]=> int(0) ["data"]=> string(58) "{"result":{"message":"小明 加入 1010 房间."},"id":1}" ["opcode"]=> int(1) ["finish"]=> bool(true) } ~~~