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