断开连接的参与者的 LeftConversation 事件

LeftConversation event for disconnected participants

我正在使用 quickstart template 进行多设备对话,参与者更改事件处理程序 (participantsChanged) 似乎在参与者断开连接时不会被触发。我希望为关闭浏览器 window 或失去互联网连接的参与者获得 LeftConversation,但似乎只有当参与者选择断开连接时才会触发该事件。

如果参与者通过单击 'Leave conversation' 按钮干净地离开对话,将立即触发 SpeechSDK.ParticipantChangedReason.LeftConversation 事件。

如果参与者通过关闭浏览器 window 或单击浏览器的后退按钮等其他方式离开对话,将立即在底层 websocket 中触发 'DisconnectSession' 消息。这将在 6 分钟内升级为 SpeechSDK.ParticipantChangedReason.LeftConversation 事件。 Websocket 'DisconnectSession' 消息当前未在 Javascript SDK 中作为 SDK 事件公开。

作为解决方法,一种可能是更新快速启动代码以添加浏览器 'beforeunload' 或 'unload' 事件的侦听器,这将代表参与者调用离开对话功能。

https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event

示例代码:

document.addEventListener("DOMContentLoaded", function () {
// ... existing variable declarations

    window.addEventListener('beforeunload', (event) => {
        // Call LeaveConversation on the participant's behalf
        handleLeaveConversation();
        // Cancel the event as stated by the standard.
        event.preventDefault();
        // Chrome requires returnValue to be set.
        event.returnValue = '';
    });
// existing code ...