php 访问 ws,swoole如何打开ws
时间: 2023-11-16 08:06:25 浏览: 33
要在 PHP 中访问 WebSocket,可以使用 Swoole 扩展。Swoole 是一个高性能的网络通信框架,它提供了 WebSocket 服务器和客户端的实现。
以下是在 PHP 中使用 Swoole 打开 WebSocket 的示例代码:
```php
$server = new swoole_websocket_server("0.0.0.0", 9501);
$server->on('open', function (swoole_websocket_server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
echo "client {$fd} closed\n";
});
$server->start();
```
这个示例代码打开了一个 WebSocket 服务器,并监听 9501 端口。当客户端与服务器握手成功时,会触发 `open` 事件;当客户端发送消息时,会触发 `message` 事件;当客户端关闭连接时,会触发 `close` 事件。
要在 PHP 中访问 WebSocket 客户端,可以使用以下代码:
```php
$client = new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_SSL);
if (!$client->connect('127.0.0.1', 9501, -1)) {
exit("connect failed. Error: {$client->errCode}\n");
}
$client->send("hello world\n");
echo $client->recv();
$client->close();
```
这个示例代码创建了一个 WebSocket 客户端,连接到了 127.0.0.1 的 9501 端口,并向服务器发送了一个消息。然后客户端等待服务器返回消息,并关闭连接。