在webman里面 创建gateway 服务器,作为websocket服务端。 当接收用户某个请求时,需要向腾讯实时ASR发起调用。 我现在使用 AsyncTcpConnection 类向腾讯实时ASR发起调用,当我成功连接到腾讯实时ASR之后,向腾讯实时ASR发起音频流,一旦我发送完成,连接就自动断开了。 找了腾讯技术,说是我这边主动断开了连接。 理论上讲,我是可以用AsyncTcpConnection 作为websocket客户端吧
发送数据示例代码:
$audioFilePath = "/home/www/webman/public/test.pcm";
$audioData = file_get_contents($audioFilePath);
// 分片大小,根据腾讯云文档设置
$chunkSize = 1280; // 举例,具体大小请参照腾讯云文档
$totalSize = strlen($audioData);
Log::info('发送音频数据:' . $totalSize);
// 分片发送
for ($i = 0; $i < $totalSize; $i += $chunkSize) {
$chunkData = substr($audioData, $i, $chunkSize);
// 发送分片
$connect->send($chunkData, true);
usleep(40 * 1000);
}
Log::info('发送结束数据');
$connect->send('{"type":"end"}');
作为websocket客户端参考文档 https://www.workerman.net/doc/workerman/faq/as-wss-client.html
感谢回复,我是参考你发的这个文档连接写的。在onWebSocketConnect里面给腾讯实时ASR发送数据的,发送完数据,就自动断开了域腾讯实时ASR那边的连接(这个是他们技术那边,说是我这边主动断开了连接,实际我没有主动关闭连接)。 后来我用百度的实时ASR,也是同样的问题,发送完数据,连接就断开了