Skip to content

Commit

Permalink
Merge pull request #65 from javad-zobeidi/dev
Browse files Browse the repository at this point in the history
Fixed websocket issue(#63) join and left room
  • Loading branch information
javad-zobeidi committed May 27, 2024
2 parents 71c196b + 751f5df commit 90778fa
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 25 deletions.
17 changes: 8 additions & 9 deletions lib/src/websocket/web_socket_handler.dart
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,27 @@ class WebSocketHandler implements WebSocketEvent {
final WebSocketClientImpl client = WebSocketClientImpl(
session: _session,
id: sessionId,
routePath: routePath,
);

websocket.listen((data) {
Map<String, dynamic> payload = jsonDecode(data);
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;
}
Expand Down
29 changes: 15 additions & 14 deletions lib/src/websocket/websocket_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -41,16 +46,14 @@ class WebSocketClientImpl implements WebSocketClient {
/// ```
@override
void toRoom(String event, String room, dynamic payload) {
List<String> members = session.getRoomMembers(room);
List<String> 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,
}));
}
}
}
Expand Down Expand Up @@ -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");
}
}
4 changes: 2 additions & 2 deletions lib/src/websocket/websocket_constants.dart
Original file line number Diff line number Diff line change
@@ -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';

Expand Down

0 comments on commit 90778fa

Please sign in to comment.