如何在 react-native 中结束对等连接
How to end peer connection in react-native
我如何在使用 react-native-peerjs 时结束对等连接..连接成功&调用有效。但是在结束通话时,我还没有找到断开连接的功能,所以通话仍然在后台继续,直到我重新启动应用程序。
我的连接是这样的
const peerServer = new Peer(undefined, {
host: 'mvmarketserver.herokuapp.com',
config: {
iceServers: [
{url:'stun:eu-turn3.xirsys.com'},
{
username: "",
credential: "",
credentialType: 'password',
urls: [
"turn:eu-turn3.xirsys.com:80?transport=udp",
"turn:eu-turn3.xirsys.com:3478?transport=udp",
"turn:eu-turn3.xirsys.com:80?transport=tcp",
"turn:eu-turn3.xirsys.com:3478?transport=tcp",
"turns:eu-turn3.xirsys.com:443?transport=tcp",
"turns:eu-turn3.xirsys.com:5349?transport=tcp",
]
}
]
},
secure: true,
port: 443,
path: '/mypeer'
})
peerServer.on('error', console.log)
目前我的断开连接是这样的,我尝试使用 new Peer() 看看是否创建一个新的,结束之前的 one.Please 帮助
dispatch({type: DELETE_STREAM, payload: []})
dispatch({type: DELETE_MY_STREAM, payload: null})
dispatch({type: DELETE_REMOTE_STREAM, payload: []})
KeepAwake.deactivate()
SoundPlayer.stop()
const roomID = this.state.room;
console.log('leave ' + roomID);
socket.emit('end-call', {roomID});
const peer = new Peer();
console.log('disconnected')
InCallManager.stop({ busytone: '_DTMF_'})
this.props.leaveRoom()
const {goBack} = this.props.navigation;
goBack(null);
这里我使用原生的 peerConnection 但也许你可以尝试这种方式。
peerServer.on('connection', conn => {
conn.on('close', () => {
console.log("Close PeerConnection");
conn.close();
});
})
但如果这不起作用,可能 conn.on('close') 没有触发。
https://github.com/peers/peerjs/issues/636
如果您使用的是 SocketIo,您可以添加 suck 事件作为
socket.broadcast.emit("user-disconnected", {SOME_DATA_WHAT_YOU_WANT_TO_SEND});
并且您可以在客户端中进行活动
socket.on("user-disconnected", (userId)=>{
// Close peer connection or remove all video or audio stream
closePeer()
});
创建 closePeer 函数
function closePeer() {
for (let conns in peerServer.connections) {
peerServer.connections[conns].forEach((conn, index, array) => {
conn.peerConnection.close();
if (conn.close)
conn.close();
});
}
}
希望对您有所帮助
我如何在使用 react-native-peerjs 时结束对等连接..连接成功&调用有效。但是在结束通话时,我还没有找到断开连接的功能,所以通话仍然在后台继续,直到我重新启动应用程序。
我的连接是这样的
const peerServer = new Peer(undefined, {
host: 'mvmarketserver.herokuapp.com',
config: {
iceServers: [
{url:'stun:eu-turn3.xirsys.com'},
{
username: "",
credential: "",
credentialType: 'password',
urls: [
"turn:eu-turn3.xirsys.com:80?transport=udp",
"turn:eu-turn3.xirsys.com:3478?transport=udp",
"turn:eu-turn3.xirsys.com:80?transport=tcp",
"turn:eu-turn3.xirsys.com:3478?transport=tcp",
"turns:eu-turn3.xirsys.com:443?transport=tcp",
"turns:eu-turn3.xirsys.com:5349?transport=tcp",
]
}
]
},
secure: true,
port: 443,
path: '/mypeer'
})
peerServer.on('error', console.log)
目前我的断开连接是这样的,我尝试使用 new Peer() 看看是否创建一个新的,结束之前的 one.Please 帮助
dispatch({type: DELETE_STREAM, payload: []})
dispatch({type: DELETE_MY_STREAM, payload: null})
dispatch({type: DELETE_REMOTE_STREAM, payload: []})
KeepAwake.deactivate()
SoundPlayer.stop()
const roomID = this.state.room;
console.log('leave ' + roomID);
socket.emit('end-call', {roomID});
const peer = new Peer();
console.log('disconnected')
InCallManager.stop({ busytone: '_DTMF_'})
this.props.leaveRoom()
const {goBack} = this.props.navigation;
goBack(null);
这里我使用原生的 peerConnection 但也许你可以尝试这种方式。
peerServer.on('connection', conn => {
conn.on('close', () => {
console.log("Close PeerConnection");
conn.close();
});
})
但如果这不起作用,可能 conn.on('close') 没有触发。 https://github.com/peers/peerjs/issues/636
如果您使用的是 SocketIo,您可以添加 suck 事件作为
socket.broadcast.emit("user-disconnected", {SOME_DATA_WHAT_YOU_WANT_TO_SEND});
并且您可以在客户端中进行活动
socket.on("user-disconnected", (userId)=>{
// Close peer connection or remove all video or audio stream
closePeer()
});
创建 closePeer 函数
function closePeer() {
for (let conns in peerServer.connections) {
peerServer.connections[conns].forEach((conn, index, array) => {
conn.peerConnection.close();
if (conn.close)
conn.close();
});
}
}
希望对您有所帮助