断开连接的参与者的 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 ...
我正在使用 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 ...