?
問(wèn)題同:https://wenda.workerman.net/question/3379 ,但該哥們說(shuō)找到是自己的問(wèn)題了,我這邊還是有問(wèn)題,麻煩各位大佬幫忙看看問(wèn)題所在.
?
在瀏覽器端可連接,原ws地址是:wss://ws.coincap.io/prices?assets=bitcoin,ethereum,ws://ws.coincap.io:443/prices?assets=bitcoin,ethereum,這種URL形式也試過(guò)的.
require_once __DIR__.'/vendor/autoload.php';
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Worker;
$worker = new Worker('text://0.0.0.0:6161');
$worker->onWorkerStart = function() {
// 以websocket協(xié)議連接遠(yuǎn)程websocket服務(wù)器
/*$context = ;
$con = new AsyncTcpConnection("ws://ws.coincap.io/prices?assets=bitcoin,ethereum", $context);*/
/*$con = new AsyncTcpConnection("ws://ws.coincap.io/prices?assets=bitcoin,ethereum");
$con->transport = 'sslv3';*/
$con = new AsyncTcpConnection("ws://ws.coincap.io:443/prices?assets=bitcoin,ethereum");
//$con->transport = 'ssl';
// 注冊(cè)連接上后的事件
$con->onConnect = function($con){
echo "connected\n";
};
$con->onWebSocketConnect = function($con, $http_buffer){
echo $http_buffer;
};
// 遠(yuǎn)程websocket服務(wù)器發(fā)來(lái)消息時(shí)
$con->onMessage = function($con, $data){
echo "recv: $data\n";
};
// 連接上發(fā)生錯(cuò)誤時(shí),一般是連接遠(yuǎn)程websocket服務(wù)器失敗錯(cuò)誤
$con->onError = function($con, $code, $msg){
echo "error: $msg\n";
};
// 當(dāng)連接遠(yuǎn)程websocket服務(wù)器的連接斷開(kāi)時(shí)
$con->onClose = function($con){
echo "connection closed\n";
$con->reconnect(1);
};
// 設(shè)置好以上各種回調(diào)后,執(zhí)行連接操作
$con->connect();
};
Worker::runAll();
報(bào)錯(cuò)信息為:
Press Ctrl+C to stop. Start success.
connected
Sec-WebSocket-Accept not found. Header:
HTTP/1.1 400 Bad Request
Server: cloudflare
Date: Sat, 08 Dec 2018 14:38:41 GMT
Content-Type: text/html
Content-Length: 269
Connection: close
CF-RAY: -
connection closed
腳本執(zhí)行方式:php client.php start
找到問(wèn)題所在了,原來(lái)是端口號(hào)443跟$con->transport = 'ssl' 要同時(shí)設(shè)置,估計(jì)犯我這錯(cuò)的人比較少,汗顏
哥,我的也是這樣,請(qǐng)問(wèn)怎么設(shè)置?
// 以websocket協(xié)議連接遠(yuǎn)程websocket服務(wù)器
$wssUrl = 'ws://tts-api.xfyun.cn:443/v2/tts?authorization=YXBpX2tleT0iNGMzZDc2MjBlOTI3MmYyNmI1OTY0ZWM0ZmI0MGVkYjQiLGFsZ29yaXRobT0iaG1hYy1zaGEyNTYiLGhlYWRlcnM9Imhvc3QgZGF0ZSByZXF1ZXN0LWxpbmUiLHNpZ25hdHVyZT0iRWtFeENmRVlmVVQ3VVI5OEVuTEdoR1U2YmNqQ0RnV3QvdEVUSTJobHdJZz0i&date=Sat, 07 Nov 2020 13:32:33 GMT&host=tts-api.xfyun.cn';
$ws_connection = new AsyncTcpConnection($wssUrl);
// 設(shè)置以ssl加密方式訪問(wèn),使之成為wss
$ws_connection->transport = 'sslv3';
// 連上后發(fā)送hello字符串
$ws_connection->onConnect = function($connection) use($frame){
$connection->send(json_encode($frame));
};
// 遠(yuǎn)程websocket服務(wù)器發(fā)來(lái)消息時(shí)
$ws_connection->onMessage = function($connection, $data){
echo "recv: $data\n";
};
// 連接上發(fā)生錯(cuò)誤時(shí),一般是連接遠(yuǎn)程websocket服務(wù)器失敗錯(cuò)誤
$ws_connection->onError = function($connection, $code, $msg){
echo "error: $msg\n";
};
// 當(dāng)連接遠(yuǎn)程websocket服務(wù)器的連接斷開(kāi)時(shí)
$ws_connection->onClose = function($connection){
echo "connection closed\n";
};
// 設(shè)置好以上各種回調(diào)后,執(zhí)行連接操作
$ws_connection->connect();
返回:
Sec-WebSocket-Accept not found. Header:
HTTP/1.1 400 Bad Request
Date: Sat, 07 Nov 2020 13:31:17 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 220
Connection: close
Server: kong/1.3.0
connection closed