connectSocket method
void
connectSocket()
Implementation
void connectSocket() {
_webSocket = WebSocket(peerId: peerId, roomId: roomId, url: serverUrl);
// socket event
_webSocket!.onOpen = joinRoom;
_webSocket!.onFail = () {};
_webSocket!.onDisconnected = () {
if (_sendTransport != null) {
_sendTransport!.close();
_sendTransport = null;
}
if (_recvTransport != null) {
_recvTransport!.close();
_recvTransport = null;
}
};
_webSocket!.onClose = () {
if (_closed) return;
close();
};
_webSocket!.onRequest = (request, accept, reject) {
switch (request['method']) {
case 'newConsumer':
{
if (!_canConsume) {
reject(403, 'I do not want to consume');
break;
}
try {
_recvTransport!.consume(
id: request['data']['id'],
producerId: request['data']['producerId'],
kind: RTCRtpMediaTypeExtension.fromString(request['data']['kind']),
rtpParameters: RtpParameters.fromMap(request['data']['rtpParameters']),
appData: Map<String, dynamic>.from(request['data']['appData']),
peerId: request['data']['peerId'],
accept: accept,
);
} catch (error) {
rethrow;
}
break;
}
default:
break;
}
};
_webSocket!.onNotification = (notification) {
switch (notification['method']) {
case 'consumerClosed':
{
String consumerId = notification['data']['consumerId'];
peersDataHolder!.consumerRemove(consumerId);
break;
}
case 'consumerPaused':
{
String consumerId = notification['data']['consumerId'];
peersDataHolder!.peerPausedConsumer(consumerId);
break;
}
case 'consumerResumed':
{
String consumerId = notification['data']['consumerId'];
peersDataHolder!.peerResumedConsumer(consumerId);
break;
}
case 'newPeer':
{
final Map<String, dynamic> newPeer = Map<String, dynamic>.from(notification['data']);
peersDataHolder!.peerAdd(newPeer);
break;
}
case 'peerClosed':
{
String peerId = notification['data']['peerId'];
peersDataHolder!.peerRemove(peerId);
break;
}
default:
break;
}
};
}