如何保持WebRTC数据通道打开在手机浏览器非活动选项卡
How to keep WebRTC dataChannel open in phone browser inactive tab?
我正在制作一个使用WebRTC的web应用程序。它在桌面浏览器上运行良好。然而,在小型智能手机web浏览器上,存在不需要的事件:
当切换移动web浏览器chrome for android和firefox for android的选项卡时,使用.createDataChannel
创建的一个开放的webrtc数据通道关闭。触发dataChannel.onclose
事件处理程序。如何防止数据通道关闭?如果不可能,是否可以重新打开数据通道而不重新启动整个信令阶段?
当使用<input type="file">
我浏览了一下stackoverflow,注意到在requestTimeOut
和setInterval
等非活动选项卡中还有其他东西被削减/减慢。
是否需要任何授权来强制它在后台保持打开状态
强制浏览器在后台保持选项卡完全活动的一种方法是使用Web Audio API。实际上,任何播放声音的应用程序(例如音乐播放器)都需要保持活力,这是有道理的。但是,这是一个非标准的黑客,因此不是未来的证明。如果你碰巧找到了其他的方法,那就分享你的知识吧。
根据mozilla的webRTC文档。
处理通道状态变化
我们的本地和远程对等端都使用一个方法来处理指示通道连接状态变化的事件。
当本地对等体经历打开或关闭事件时,调用handleSendChannelStatusChange()方法:
function handleSendChannelStatusChange(event) {
if (sendChannel) {
var state = sendChannel.readyState;
if (state === "open") {
messageInputBox.disabled = false;
messageInputBox.focus();
sendButton.disabled = false;
disconnectButton.disabled = false;
connectButton.disabled = true;
} else {
messageInputBox.disabled = true;
sendButton.disabled = true;
connectButton.disabled = false;
disconnectButton.disabled = true;
}
}
}
如果通道的状态变为"open",则表示我们已经完成了两个对等体之间的链路建立。用户界面相应更新:启用消息发送的文本输入框,聚焦输入框以便用户可以立即开始键入,启用"发送"answers"断开"按钮,现在它们可用,并禁用"连接"按钮,因为当连接打开时不需要它。
如果状态变为"关闭",则会发生相反的操作:输入框和"发送"按钮被禁用,"连接"按钮被启用,以便用户可以打开一个新的连接,如果他们希望这样做,"断开"按钮被禁用,因为当没有连接存在时它是无用的。
所以尝试使用handleReceiveChannelStatusChange
另一方面,这个示例远程对等体忽略状态更改事件,除了将事件记录到控制台:
function handleReceiveChannelStatusChange(event) {
if (receiveChannel) {
console.log("Receive channel's status has changed to " +
receiveChannel.readyState);
}
}
handleReceiveChannelStatusChange()方法接收发生的事件作为输入参数;这将是一个RTCDataChannelEvent
- 如何使用手机浏览器上的按钮拨打USSD代码
- 是否可以在系统/电脑浏览器中访问手机摄像头
- 正在检测智能手机浏览器上的悬停或鼠标悬停
- 适用于可在网络浏览器和智能手机上运行的网站的 MP3 播放器
- Dropdown不会't工作手机浏览器&Firefox
- 响应式设计适用于桌面浏览器、移动模拟器(Safari和Mozilla Firefox),但不适用于真正的智能手机(And
- 安卓手机浏览器检测
- 在手机和平板电脑浏览器上播放音频片段
- 手机间隙 3.0 + 煎茶触摸打开 URL 在设备浏览器中
- 智能手机:如何检测用户离开浏览器
- 在苹果手机野生动物园浏览器中,加载包含href的javascript时收到错误消息
- 跨浏览器/跨平台离线手机应用程序
- Javascript不适用于谷歌chrome和智能手机浏览器
- 如何强制Opera Mini用户从手机上的其他浏览器查看我的网站
- 地理定位可以在网络浏览器上工作,但不能在android手机浏览器上工作
- fullpage.js滚动条使其在手机浏览器上显得滞后
- 在网络浏览器中的android手机中停止后退行为
- 生产中手机/平板电脑浏览器上出现奇怪的JS错误
- 如何检测应用安装在任何浏览器手机android或iOS
- & # 39; ontouchstart& # 39;在msedge浏览器手机模拟器中,inwindow返回true,但