
workerman 的 websocket 客服端是这样实现的:(很简单,很容易就使用了,和前端差不多)
http://doc.workerman.net/315306
swoole 如何实现这样相同的功能呢?
看了一下的一些文档,始终无法理解:
https://github.com/matyhtf/framework/blob/master/libs/Swoole/Client/WebSocket.php
https://wiki.swoole.com/wiki/page/p-http_client.html
如果只是获取的话,比较简单:
<?php $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client->on('connect', function($cli) { $cli->send("GET / HTTP/1.1\r\n\r\n"); }); $client->on('receive', function($cli, $data) { echo "Received: " . $data; }); $client->on('error', function($cli) { echo "Connect failed\r\n\r\n"; }); $client->on('close', function($cli) { echo "Connection close\r\n\r\n"; }); $client->connect('xxx.xxx.xxx.xxx', 1234, true); 但是我这里想要实现的是类似 workerman 那样的,可以一直连接。
1 owenliang 2017-11-23 17:59:20 +08:00 我给你的建议是用 Go。 |
2 extreme 2017-11-23 18:01:06 +08:00 |
5 GreatHumorist 2017-11-23 23:52:50 +08:00 via iPhone swoole 不是直接有 websocket server 吗 |
6 BruceHong 2017-11-24 00:31:55 +08:00 websocket 只是一个文本协议(和 http 差不多),原理就是 TCP 连接后通过 HTTP 101 upgrade 到 ws 协议,别太纠结具体实现。 |
7 LiuXuFei OP @GreatHumorist 是要 swoole 做客户端的例子,不是服务端 |
8 tanszhe 2017-11-24 13:55:41 +08:00 你不关就一直连接啊 |