用AsyncTcpConnection链接wss,在自己的电脑上都能行,在服务器上就不行了,提示Sec-WebSocket-Accept not found
<?php
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->count = 1;
// 进程启动时
$worker->onWorkerStart = function ($onWorker) {
$ws_connection = new AsyncTcpConnection("ws://stream.binance.com:443/stream?streams=luncusdt@ticker");
$ws_connection->transport = 'ssl';
// 当TCP完成三次握手后
$ws_connection->onConnect = function ($connection) {
echo "连接成功,开始订阅币安现货信息\n";
};
// 远程websocket服务器发来消息时
$ws_connection->onMessage = function ($connection, $data) {
var_dump($data);
$data = json_decode($data, true);
//心跳检测
if (isset($data['ping'])) {
$msg = ["pong" => $data['ping']];
$connection->send(json_encode($msg));
}
};
// 连接上发生错误时,一般是连接远程websocket服务器失败错误
$ws_connection->onError = function ($connection, $code, $msg) {
echo "error: $msg\n";
};
// 当连接远程websocket服务器的连接断开时
$ws_connection->onClose = function ($connection) {
echo "connection closed and try to reconnect\n";
// 如果连接断开,1秒后重连
$connection->reConnect(1);
};
// 设置好以上各种回调后,执行连接操作
$ws_connection->connect();
};
// 如果不是在根目录启动,则运行runAll方法
if (!defined('GLOBAL_START')) {
Worker::runAll();
}
Sec-WebSocket-Accept not found. Header:
HTTP/1.1 451
Server: awselb/2.0
Date: Thu, 20 Jun 2024 04:52:17 GMT
Content-Length: 224
Connection: keep-alive
Content-Type: application/json
本地成功执行
服务器上报错
服务器区域的?
451状态码 可能是对方websocket接口不支持是你服务器所在区域
@liuhua 你后来咋解决的?分享下