diff --git a/lib/src/websocket/web_socket_handler.dart b/lib/src/websocket/web_socket_handler.dart index 585e775..b9120c0 100644 --- a/lib/src/websocket/web_socket_handler.dart +++ b/lib/src/websocket/web_socket_handler.dart @@ -33,6 +33,7 @@ class WebSocketHandler implements WebSocketEvent { final WebSocketClientImpl client = WebSocketClientImpl( session: _session, id: sessionId, + routePath: routePath, ); websocket.listen((data) { @@ -40,21 +41,19 @@ class WebSocketHandler implements WebSocketEvent { String event = '${routePath}_${payload[webScoketEventKey]}'; /// client join the room - if (event == webSocketJoinRoomEventName) { - String? roomId = payload[webSocketRoomKey]; - if (roomId != null) { - _session.joinRoom(sessionId, roomId); - client.joinRoom(roomId); + if (event == '${routePath}_$webSocketJoinRoomEventName') { + String? roomId = payload[webSocketRoomKey].toString(); + if (roomId.isNotEmpty) { + _session.joinRoom(sessionId, '${routePath}_$roomId'); } return; } /// client left the room if (event == webSocketLeftRoomEventName) { - String? roomId = payload[webSocketRoomKey]; - if (roomId != null) { - _session.leftRoom(sessionId, roomId); - client.leftRoom(roomId); + String? roomId = payload[webSocketRoomKey].toString(); + if (roomId.isNotEmpty) { + _session.leftRoom(sessionId, '${routePath}_$roomId'); } return; } diff --git a/lib/src/websocket/websocket_client.dart b/lib/src/websocket/websocket_client.dart index a26ccd1..963315c 100644 --- a/lib/src/websocket/websocket_client.dart +++ b/lib/src/websocket/websocket_client.dart @@ -13,8 +13,13 @@ abstract class WebSocketClient { class WebSocketClientImpl implements WebSocketClient { final String id; + final String routePath; final WebsocketSession session; - const WebSocketClientImpl({required this.session, required this.id}); + const WebSocketClientImpl({ + required this.session, + required this.id, + required this.routePath, + }); @override String get clientId => id; @@ -41,16 +46,14 @@ class WebSocketClientImpl implements WebSocketClient { /// ``` @override void toRoom(String event, String room, dynamic payload) { - List members = session.getRoomMembers(room); + List members = session.getRoomMembers('${routePath}_$room'); for (String member in members) { - if (id != member) { - SessionInfo? info = session.getWebSocketInfo(member); - if (info != null) { - info.websocket.add(jsonEncode({ - 'event': event, - 'payload': payload, - })); - } + SessionInfo? info = session.getWebSocketInfo(member); + if (info != null) { + info.websocket.add(jsonEncode({ + 'event': event, + 'payload': payload, + })); } } } @@ -88,12 +91,10 @@ class WebSocketClientImpl implements WebSocketClient { } void joinRoom(String roomId) { - //emit('joinRoom', 'Join Room'); - toRoom("joinRoom", roomId, "$clientId join room"); + toRoom("join-room", roomId, "join room"); } void leftRoom(String roomId) { - //emit('leftRoom', 'Left Room'); - toRoom("leftRoom", roomId, "$clientId left room"); + toRoom("left-room", roomId, "left room"); } } diff --git a/lib/src/websocket/websocket_constants.dart b/lib/src/websocket/websocket_constants.dart index b0c66cd..cd4dc92 100644 --- a/lib/src/websocket/websocket_constants.dart +++ b/lib/src/websocket/websocket_constants.dart @@ -1,6 +1,6 @@ -const String webSocketJoinRoomEventName = 'joinRoom'; +const String webSocketJoinRoomEventName = 'join-room'; -const String webSocketLeftRoomEventName = 'leftRoom'; +const String webSocketLeftRoomEventName = 'left-room'; const String webScoketEventKey = 'event';