mediasfu-reactnative-expo
Version:
MediaSFU Prebuilt React Native (Expo) SDK
66 lines • 2.65 kB
JavaScript
import { newPipeProducer } from './socketReceiveMethods/newPipeProducer';
import { producerClosed } from './socketReceiveMethods/producerClosed';
/**
* Connects to remote IPs and manages socket connections.
*
* @param {ConnectLocalIpsOptions} options - The options for connecting IPs.
* @param {Socket} options.socket - The socket to connect to.
* @param {Function} [options.newProducerMethod=newPipeProducer] - The method to handle new pipe producer events.
* @param {Function} [options.closedProducerMethod=producerClosed] - The method to handle producer closed events.
* @param {ConnectLocalIpsParameters} options.parameters - Additional parameters.
* @param {Function} options.parameters.reorderStreams - The function to reorder streams.
* @param {Function} options.parameters.getUpdatedAllParams - The function to get updated parameters.
* @param {Socket} options.parameters.socket - The socket to connect to.
*
* @returns {Promise<void>} A promise that resolves when the connection is established.
*
* @throws Will throw an error if required parameters are missing or if there is an issue connecting to a remote IP.
*
* @example
* ```typescript
* const options = {
* socket,
* newProducerMethod: newPipeProducer,
* closedProducerMethod: producerClosed,
* parameters: connectLocalIpsParameters,
* };
*
* connectLocalIps(options)
* .then(() => {
* console.log('Connected to local IPs');
* })
* .catch(error => {
* console.error('Error connecting to local IPs:', error);
* });
* ```
*/
export const connectLocalIps = async ({ socket,
// mediasfu methods
newProducerMethod = newPipeProducer, closedProducerMethod = producerClosed, parameters, }) => {
try {
// Connect to the remote socket using socket.io-client
// Handle new pipe producer event
socket.on('new-producer', async ({ producerId, islevel }) => {
if (newProducerMethod) {
await newProducerMethod({
producerId,
islevel,
nsock: socket,
parameters,
});
}
});
// Handle producer closed event
socket.on('producer-closed', async ({ remoteProducerId }) => {
if (closedProducerMethod) {
await closedProducerMethod({ remoteProducerId, parameters });
}
});
await parameters.receiveAllPipedTransports({ nsock: socket, community: true, parameters });
}
catch (error) {
// Handle the error
console.log('ConnectLocalIps error', error);
}
};
//# sourceMappingURL=connectLocalIps.js.map