WebSocket
向返回的 url 建立 WebSocket。token 走 subprotocol 传递,因为浏览器无法在 WebSocket 握手时设置 header。
expiresAt 约束的是建立连接的截止时间,不是连接能存活多久。一条流最长 4 小时;连续 60 秒没有音频就会结束。session.ping 不会重置这 60 秒。
这是一条纯实时管道。除非你传 store: true,否则什么都不留——连接一断,音频和转写在我们这边就没有了。
向返回的 url 建立 WebSocket。token 走 subprotocol 传递,因为浏览器无法在 WebSocket 握手时设置 header。
expiresAt 约束的是建立连接的截止时间,不是连接能存活多久。一条流最长 4 小时;连续 60 秒没有音频就会结束。session.ping 不会重置这 60 秒。
这是一条纯实时管道。除非你传 store: true,否则什么都不留——连接一断,音频和转写在我们这边就没有了。
wss://<url from connect>Sec-WebSocket-Protocol: lecsync.realtime.v1, <token>const ws = new WebSocket( url, ['lecsync.realtime.v1', token],);// 收到 session.ready 再发音频。ws.onmessage = (e) => { const msg = JSON.parse(e.data); if (msg.type === 'session.ready') startSendingAudio();};ws.send(JSON.stringify({ type: 'session.ping' }));// → { "type": "session.pong" }