socket.io连接失败:引擎.io客户端:套接字探测传输“;websocket“;失败,原因是错误:错误:websocket错误

socket.io连接失败:引擎.io客户端:套接字探测传输“;websocket“;失败,原因是错误:错误:websocket错误,websocket,socket.io,Websocket,Socket.io,我正在将socket.io与WebRTC结合使用以创建一个电话会议应用程序 我正在使用此存储库(该存储库有相同的错误,但非常接近工作状态): 我得到以下错误: 在浏览器(Chrome)控制台中进行调试时,我还得到以下结果: “engine.io客户端:套接字探测传输”websocket“失败,原因是错误:错误:websocket错误” 以下是我的档案: app.js let express = require( 'express' ); let app = express(); let ser

我正在将socket.io与WebRTC结合使用以创建一个电话会议应用程序

我正在使用此存储库(该存储库有相同的错误,但非常接近工作状态):

我得到以下错误:

在浏览器(Chrome)控制台中进行调试时,我还得到以下结果:

“engine.io客户端:套接字探测传输”websocket“失败,原因是错误:错误:websocket错误”

以下是我的档案:

app.js

let express = require( 'express' );
let app = express();
let server = require( 'http' ).Server( app , {
  rejectUnauthorized: false // WARN: please do not do this in production
});
let io = require( 'socket.io' )( server );
let stream = require( './ws/stream' );
let path = require( 'path' );
let favicon = require( 'serve-favicon' );

app.use( favicon( path.join( __dirname, 'favicon.ico' ) ) );
app.use( '/assets', express.static( path.join( __dirname, 'assets' ) ) );

app.get( '/', ( req, res ) => {
    res.sendFile( __dirname + '/index.html' );
} );


io.of( '/stream' ).on( 'connection', stream );

let port = process.env.PORT || 3000
server.listen(port);
stream.js

const stream = ( socket ) => {
    socket.on( 'subscribe', ( data ) => {
        //subscribe/join a room
        socket.join( data.room );
        socket.join( data.socketId );

        //Inform other members in the room of new user's arrival
        if ( socket.adapter.rooms[data.room].length > 1 ) {
            socket.to( data.room ).emit( 'new user', { socketId: data.socketId } );
        }
    } );


    socket.on( 'newUserStart', ( data ) => {
        socket.to( data.to ).emit( 'newUserStart', { sender: data.sender } );
    } );


    socket.on( 'sdp', ( data ) => {
        socket.to( data.to ).emit( 'sdp', { description: data.description, sender: data.sender } );
    } );


    socket.on( 'ice candidates', ( data ) => {
        socket.to( data.to ).emit( 'ice candidates', { candidate: data.candidate, sender: data.sender } );
    } );


    socket.on( 'chat', ( data ) => {
        socket.to( data.room ).emit( 'chat', { sender: data.sender, msg: data.msg } );
    } );
};

module.exports = stream;
rtc.js(客户端)

我正在使用node.js,它由Phusion Passenger运行

let socket = io('/stream');
    //Get user video by default
    getAndSetUserStream();


    socket.on('connect', ()=>{
        //set socketId
        socketId = socket.io.engine.id;
    

        socket.emit('subscribe', {
            room: room,
            socketId: socketId
        });
        
socket.on("connect_error", (err) => {
  console.log(`connect_error due to ${err.message}`);
});


        socket.on('new user', (data)=>{
            socket.emit('newUserStart', {to:data.socketId, sender:socketId});
            pc.push(data.socketId);
            init(true, data.socketId);
        });


        socket.on('newUserStart', (data)=>{
            pc.push(data.sender);
            init(false, data.sender);
        });


        socket.on('ice candidates', async (data)=>{
            data.candidate ? await pc[data.sender].addIceCandidate(new RTCIceCandidate(data.candidate)) : '';
        });


        socket.on('sdp', async (data)=>{
            if(data.description.type === 'offer'){
                data.description ? await pc[data.sender].setRemoteDescription(new RTCSessionDescription(data.description)) : '';

                h.getUserFullMedia().then(async (stream)=>{
                    if(!document.getElementById('local').srcObject){
                        h.setLocalStream(stream);
                    }

                    //save my stream
                    myStream = stream;

                    stream.getTracks().forEach((track)=>{
                        pc[data.sender].addTrack(track, stream);
                    });

                    let answer = await pc[data.sender].createAnswer();
                    
                    await pc[data.sender].setLocalDescription(answer);

                    socket.emit('sdp', {description:pc[data.sender].localDescription, to:data.sender, sender:socketId});
                }).catch((e)=>{
                    console.error(e);
                });
            }

            else if(data.description.type === 'answer'){
                await pc[data.sender].setRemoteDescription(new RTCSessionDescription(data.description));
            }
        });


        socket.on('chat', (data)=>{
            h.addChat(data, 'remote');
        })
    });