Mostly working websocket stuff, some message weirdness at the moment...

This commit is contained in:
Nate Anderson
2025-02-10 18:55:15 -07:00
parent 623474e0c6
commit b37862a321
19 changed files with 543 additions and 87 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
import 'dart:io';
import 'dart:math';
import 'package:backend/service/db_access.dart';
import 'package:backend/db/db_access.dart';
import 'package:dart_frog/dart_frog.dart';
import 'package:logging/logging.dart';
import 'package:shared_models/room.dart';
+1 -1
View File
@@ -1,4 +1,4 @@
import 'package:backend/service/db_access.dart';
import 'package:backend/db/db_access.dart';
import 'package:dart_frog/dart_frog.dart';
Future<Response> onRequest(RequestContext context, String roomCode) async {
+34
View File
@@ -0,0 +1,34 @@
import 'package:backend/db/database.dart';
import 'package:backend/db/db_access.dart';
import 'package:backend/socket_manager.dart';
import 'package:dart_frog/dart_frog.dart';
import 'package:dart_frog_web_socket/dart_frog_web_socket.dart';
import 'package:logging/logging.dart';
Future<Response> onRequest(RequestContext context, String roomCode) async {
final logger = Logger('room/[$roomCode]/ws');
final handler = webSocketHandler(protocols: ['game.room.v1'], (channel, protocol) async {
try {
channel.sink.add('test');
logger.finest(protocol);
final room = await Db.getRoomByCode(roomCode);
if (room == null) {
logger.finer('Room not found, aborting...');
await channel.sink.close(4404, 'Room not found');
return;
}
final user = context.read<User>();
final status = await SocketManager().addConnection(channel, roomUuid: room.uuid, userUuid: user.uuid);
if (status == Status.failure) {
logger.finer('Failed to spawn room isolate, closing connection.');
await channel.sink.close(4404, 'Room not found');
return;
}
} catch (e) {
logger.severe('Unexpected error occurred getting websocket connection', e, StackTrace.current);
}
});
return handler(context);
}
-9
View File
@@ -1,9 +0,0 @@
import 'package:dart_frog/dart_frog.dart';
import 'package:dart_frog_web_socket/dart_frog_web_socket.dart';
Future<Response> onRequest(RequestContext context) async {
final handler = webSocketHandler((channel, protocol) {
channel.stream.listen(print);
});
return handler(context);
}