Skip to content

swoole-cli 6.0.1 macOS arm版本,执行以下代码,出现报错 #931

@yibozheng

Description

@yibozheng

环境:
OS: macOS 15.3.1 (24D70)
swoole-cli: 官网下载的 Swoole 6.0.1 (cli) (built: Feb 21 2025 13:27:18) (ZTS)

swoole-ws-server-9501.php
用于主ws 服务 侦听 9501 端口,有连接进入时,连接 swoole websocker server 9502 端口

<?php
$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);

$server->on("open", function (Swoole\WebSocket\Server $server, $request) {
    echo "新客户端连接,fd={$request->fd}, 时间: " . date("Y-m-d H:i:s") . "\n";
    $server->push($request->fd, "欢迎,客户端 #{$request->fd} 已连接!");
});

$server->on("message", function (Swoole\WebSocket\Server $server, $frame) {
    try {
        $targetClient = new Swoole\Coroutine\Http\Client('127.0.0.1', 9502);
        $targetClient->upgrade('/');
        echo "Connected to WebSocket server\n";

        $message = 'Hello, WebSocket Server!';
        $targetClient->push($message);
        echo "Sent: $message\n";
    } catch (Exception $e) {
        echo "Connection error: " . $e->getMessage() . "\n";
        $targetClient = null;
    }
});

$server->on("close", function (Swoole\WebSocket\Server $server, $fd) {
    echo "客户端 #{$fd} 已断开连接, 时间: " . date("Y-m-d H:i:s") . "\n";
});

echo "WebSocket 服务器启动于 ws://0.0.0.0:9501\n";
$server->start();


swoole-ws-server-9502.php
用于目标 ws 服务 侦听 9502 端口

<?php
$server = new Swoole\WebSocket\Server("0.0.0.0", 9502);

$server->on("open", function (Swoole\WebSocket\Server $server, $request) {
    echo "新客户端连接,fd={$request->fd}, 时间: " . date("Y-m-d H:i:s") . "\n";
    $server->push($request->fd, "欢迎,客户端 #{$request->fd} 已连接!");
});

$server->on("message", function (Swoole\WebSocket\Server $server, $frame) {
    $clientId = $frame->fd;
    $message = $frame->data;
    echo "收到消息: client_fd={$clientId}, message={$message}, 时间: " . date("Y-m-d H:i:s") . "\n";

    $server->push($clientId, "服务器回显: " . $message);
});

$server->on("close", function (Swoole\WebSocket\Server $server, $fd) {
    echo "客户端 #{$fd} 已断开连接, 时间: " . date("Y-m-d H:i:s") . "\n";
});

echo "WebSocket 服务器启动于 ws://0.0.0.0:9502\n";
$server->start();

swoole-ws-client-9501.php
连接 9501 服务的客户端

<?php

use Swoole\Coroutine\Http\Client;
use Swoole\Coroutine\run;

// 使用协程
Swoole\Coroutine\run(function () {
    // 创建 WebSocket 客户端
    $client = new Client('127.0.0.1', 9501);
    #$client = new Client('127.0.0.1', 31000);

    // 连接到 WebSocket 服务器
    $client->upgrade('/');

    echo "Connected to WebSocket server\n";

    // 发送消息
    $message = 'Hello, WebSocket Server!';
    $client->push($message);
    echo "Sent: $message\n";

    // 接收消息
    # $response = $client->recv();
    # echo "Received: {$response->data}\n";

    // 关闭连接
    $client->close();
    echo "Connection closed\n";
    # sleep(1);
});

启动步骤:
启动
swoole-ws-server-9501.php
swoole-ws-server-9502.php
启动侦听

启动 swoole-ws-client-9501.php 触发连接 9501 服务

问题log:

服务 9502 console 报以下错误:

WebSocket 服务器启动于 ws://0.0.0.0:9502
新客户端连接,fd=1, 时间: 2025-03-12 03:39:20
收到消息: client_fd=1, message=Hello, WebSocket Server!, 时间: 2025-03-12 03:39:20
客户端 #1 已断开连接, 时间: 2025-03-12 03:39:20
[1]    59613 bus error  swoole-cli-6.0.1 swoole-ws-server-9502.php

注:以上三个代码在同一台机器上执行

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions