handle method
handle http request and convert into websocket
Implementation
Future<WebSocket> handle(DoxRequest req) async {
WebSocket ws = await WebSocketTransformer.upgrade(req.httpRequest);
String socketId = _createSocketId(req);
/// add to active connection
_storage.addWebSocketInfo(socketId, ws);
_storage.addWebSocketIdToRoom(socketId, _defaultRoom);
ws.listen(
(dynamic data) async {
Map<String, dynamic> payload = jsonDecode(data);
String eventName = payload['event'];
dynamic message = payload['message'];
Function? controller = _events[eventName];
if (controller != null) {
SocketEmitter emitter =
SocketEmitter(sender: socketId, roomId: payload['room']);
Function.apply(controller, <dynamic>[emitter, message]);
}
if (eventName == _joinRoomEventName) {
_storage.addWebSocketIdToRoom(socketId, message);
}
},
onDone: () async {
_storage.removeWebSocketInfo(socketId);
},
onError: (dynamic error) async {
_storage.removeWebSocketInfo(socketId);
},
);
return ws;
}