WebSocket Gids
Welkom bij de Finch WebSocket Gids! Deze gids legt uit hoe je WebSocket gebruikt in je Finch-applicatie. Finch biedt ondersteuning en handige hulpmiddelen voor real-time applicaties.
WebSocket gebruiken in Finch
Voor het definiëren van WebSocket-routes in Finch gebruik je de SocketManager klasse. Deze klasse beheert WebSocket-verbindingen en je kunt addSocketRoute gebruiken om routes toe te voegen. Gebruik vervolgens een socketController om de verbindingen af te handelen.
SocketManager
De SocketManager klasse beheert verbindingen. Een voorbeeld:
final socketManager = SocketManager(
app,
event: SocketEvent(
onConnect: (socket) {
app.socketManager?.sendToAll(
"New user connected! count: ${app.socketManager?.countClients}",
path: "output",
);
socket.send(
{'message': 'Soccuess connect to socket!'},
path: 'connected',
);
},
onMessage: (socket, data) {},
onDisconnect: (socket) {
var count = app.socketManager?.countClients ?? 0;
app.socketManager?.sendToAll(
"User disconnected! count: ${count - 1}",
path: "output",
);
},
),
routes: getSocketRoute(),
);
SocketEvent
SocketEvent definieert gebeurtenissen in een WebSocket-verbinding. Voorbeeld:
'time': SocketEvent(
onMessage: (socket, data) {
socket.send(DateTime.now().toString(), path: 'output');
},
),
WebSocket Route
WebSocket-routes definieer je in getSocketRoute() die een Map<String, SocketEvent> retourneert:
Map<String, SocketEvent> getSocketRoute() {
return {
'test': SocketEvent(
onMessage: (socket, data) {
socket.send([socket.rq.headers], path: 'test');
},
),
};
}
Socket routes toevoegen aan FinchApp
getSocketRoute() retourneert een Map<String, SocketEvent> en voeg je toe aan FinchApp met addSocketRoute().
Voorbeeld controller:
class SocketController exatends Controller {
Future<String> socket() async {
await socketManager.requestHandle(rq);
return rq.renderSocket();
}
}
En route:
FinchRoute(
key: 'root.ws',
path: '/ws',
methods: Methods.ALL,
index: socketController.socket,
),