createWebSocketHandler function
Expression
createWebSocketHandler(
- MetaWebSocketMethod webSocket, {
- required ServerRoute route,
- required ServerType returnType,
- required String classVarName,
Implementation
Expression createWebSocketHandler(
MetaWebSocketMethod webSocket, {
required ServerRoute route,
required ServerType returnType,
required String classVarName,
}) {
final handler = createHandler(
route: route,
returnType: returnType,
classVarName: 'controller',
invokeController: false,
webSocket: null,
yieldData: true,
inferredParams: {
(CloseWebSocket).name: refer('context').property('close'),
(AsyncWebSocketSender).name: _createAsyncWebSocketSender(returnType),
},
);
return Method(
(p) => p
..requiredParameters.add(Parameter((b) => b..name = 'context'))
..modifier = MethodModifier.async
..body = Block.of([
declareFinal(
'controller',
).assign(refer(classVarName).call([])).statement,
const Code(''),
refer((WebSocketHandler).name)
.newInstance([], {
if (webSocket.triggerOnConnect || !webSocket.mode.canReceive)
'onConnect': handler,
if (webSocket.mode.canReceive) 'onMessage': handler,
})
.returned
.statement,
]),
).closure;
}