程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Socket.io webrtc 和 PeerJS 在 Chrome 移动设备上不起作用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Socket.io webrtc 和 PeerJS 在 Chrome 移动设备上不起作用?

开发过程中遇到Socket.io webrtc 和 PeerJS 在 Chrome 移动设备上不起作用的问题如何解决?下面主要结合日常开发的经验,给出你关于Socket.io webrtc 和 PeerJS 在 Chrome 移动设备上不起作用的解决方法建议,希望对你解决Socket.io webrtc 和 PeerJS 在 Chrome 移动设备上不起作用有所启发或帮助;

我想创建实时视频通话

我的代码在笔记本电脑浏览器(Safari、Chrome 和 ...)上运行良好

但如果我在 iOS 手机或 AndroID 手机上使用 Chrome,则无法正常工作!

此外,有时在 Safari 移动设备上无法正常工作

始终在笔记本电脑上购买工作正常!

index.htm

<!DOCTYPE HTML>
<HTML>
    <head>
        <title>Chat</title>
        <script>
            const ROOM_ID = "1"
        </script>
        <script src="https://unpkg.com/peerJs@1.3.1/dist/peerJs.min.Js"></script>
        <script src="https://***/socket.io/socket.io.Js" defer></script>
        <script src="script.Js" defer></script>
        <style>
            vIDeo {
                wIDth: 200px;
                height: 200px;
                object-fit: cover;
                BACkground: #f00;
            }
        </style>
    </head>
    <body> 
        <vIDeo ID="self" playsinline autoplay muted></vIDeo>
        <vIDeo ID="remote" playsinline autoplay></vIDeo>
    </body>
</HTML>

Script.Js

window.onload = function(){
    var socket = io('https://***.com')
    var myPeer = new Peer(undefined,{
        host: 'peer.***.com',path: '/',port: 3005
    })

    var callList = {}
    var myVIDeo = document.createElement('vIDeo')
    myVIDeo.setAttribute("ID","self");

    navigator.mediaDevices.getUserMedia({
        vIDeo: true,audio: true
    }).then(stream => {
        addVIDeoStream(myVIDeo,stream)

        myPeer.on('call',call => {
            call.answer(stream)
            var vIDeo = document.createElement('vIDeo')
            call.on('stream',userviDeoStream => {
                if(!callList[call.peer]){
                    callList[call.peer] = call
                    addVIDeoStream(vIDeo,userviDeoStream)
                }
            })

            call.on('close',() => {
                vIDeo.remove()
            })
        })

        socket.on('user-connected',userID => {
            connectToNewUser(userID,stream)
        })

        socket.on('user-disconnected',userID => {
            if(callList[userID]) callList[userID].close()
        })
    })

    function connectToNewUser(userID,stream){
        var call = myPeer.call(userID,stream)
        var vIDeo = document.createElement('vIDeo')
        vIDeo.setAttribute("ID","ID_"+userID);
    
        call.on('stream',userviDeoStream => {
            if(!callList[userID]){
                callList[userID] = call
                addVIDeoStream(vIDeo,userviDeoStream)
            }
        })
        
        call.on('close',() => {
            vIDeo.remove()
        })

        call.on('error',function(err) {
            console.log("ERRR: "+err);
        });
    }

    myPeer.on('open',ID => {
        socket.emit('join-room',ROOM_ID,ID)
    })

    function addVIDeoStream(vIDeo,stream){
        var ID = vIDeo.getAttribute('ID');

        vIDeo = document.getElementByID('remote')
        if(ID == "self")
            vIDeo = document.getElementByID('self')
            
        vIDeo.srcObject = stream

        vIDeo.onloadedMetadata = function(){
            vIDeo.play()
        }
    }
}

我该如何解决?

我希望在所有设备和所有浏览器上都能进行视频通话

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

@H_801_36@

大佬总结

以上是大佬教程为你收集整理的Socket.io webrtc 和 PeerJS 在 Chrome 移动设备上不起作用全部内容,希望文章能够帮你解决Socket.io webrtc 和 PeerJS 在 Chrome 移动设备上不起作用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。