在webman里面 創(chuàng)建gateway 服務(wù)器,作為websocket服務(wù)端。 當(dāng)接收用戶某個(gè)請(qǐng)求時(shí),需要向騰訊實(shí)時(shí)ASR發(fā)起調(diào)用。 我現(xiàn)在使用 AsyncTcpConnection 類向騰訊實(shí)時(shí)ASR發(fā)起調(diào)用,當(dāng)我成功連接到騰訊實(shí)時(shí)ASR之后,向騰訊實(shí)時(shí)ASR發(fā)起音頻流,一旦我發(fā)送完成,連接就自動(dòng)斷開(kāi)了。 找了騰訊技術(shù),說(shuō)是我這邊主動(dòng)斷開(kāi)了連接。 理論上講,我是可以用AsyncTcpConnection 作為websocket客戶端吧
發(fā)送數(shù)據(jù)示例代碼:
$audioFilePath = "/home/www/webman/public/test.pcm";
$audioData = file_get_contents($audioFilePath);
// 分片大小,根據(jù)騰訊云文檔設(shè)置
$chunkSize = 1280; // 舉例,具體大小請(qǐng)參照騰訊云文檔
$totalSize = strlen($audioData);
Log::info('發(fā)送音頻數(shù)據(jù):' . $totalSize);
// 分片發(fā)送
for ($i = 0; $i < $totalSize; $i += $chunkSize) {
$chunkData = substr($audioData, $i, $chunkSize);
// 發(fā)送分片
$connect->send($chunkData, true);
usleep(40 * 1000);
}
Log::info('發(fā)送結(jié)束數(shù)據(jù)');
$connect->send('{"type":"end"}');
作為websocket客戶端參考文檔 http://wtbis.cn/doc/workerman/faq/as-wss-client.html
感謝回復(fù),我是參考你發(fā)的這個(gè)文檔連接寫的。在onWebSocketConnect里面給騰訊實(shí)時(shí)ASR發(fā)送數(shù)據(jù)的,發(fā)送完數(shù)據(jù),就自動(dòng)斷開(kāi)了域騰訊實(shí)時(shí)ASR那邊的連接(這個(gè)是他們技術(shù)那邊,說(shuō)是我這邊主動(dòng)斷開(kāi)了連接,實(shí)際我沒(méi)有主動(dòng)關(guān)閉連接)。 后來(lái)我用百度的實(shí)時(shí)ASR,也是同樣的問(wèn)題,發(fā)送完數(shù)據(jù),連接就斷開(kāi)了