createStreamableHttpTransport
Result<
- String sessionId
Create a stateful Streamable HTTP transport.
Each call creates a new transport for one session.
Use onSessionInitialized to capture the session ID.
Implementation
Result<StreamableHttpTransport, String> createStreamableHttpTransport({
String Function()? sessionIdGenerator,
void Function(String sessionId)? onSessionInitialized,
}) {
try {
final sdkModule = requireModule(
'@modelcontextprotocol/sdk/server/streamableHttp.js',
);
final transportClass =
(sdkModule as JSObject)['StreamableHTTPServerTransport'] as JSFunction;
final options = JSObject();
if (sessionIdGenerator != null) {
options['sessionIdGenerator'] = (() => sessionIdGenerator().toJS).toJS;
}
if (onSessionInitialized != null) {
options['onsessioninitialized'] = ((JSString sid) => onSessionInitialized(
sid.toDart,
)).toJS;
}
final transport = transportClass.callAsConstructor<StreamableHttpTransport>(
options,
);
return Success(transport);
} catch (e) {
return Error('Failed to create StreamableHTTP transport: $e');
}
}