Asp.net 使用Saturn框架,如何在特定请求之外获得对Websockets中心的引用?

Asp.net 使用Saturn框架,如何在特定请求之外获得对Websockets中心的引用?,asp.net,websocket,f#,saturn-framework,safe-stack,Asp.net,Websocket,F#,Saturn Framework,Safe Stack,我正在为一个玩具问题构建一个应用程序,以了解有关安全的更多信息。我有一些后台进程在服务器端运行,有时它们需要向连接的客户端发送未经提示的消息。这意味着我需要从任何特定请求之外引用SocketHub 目前,我有一个可变变量,当通道连接时,我将值传递给该变量: let mainChannel = channel { join (fun ctx socketId -> task { printfn "Connected! Main Socket Id: %

我正在为一个玩具问题构建一个应用程序,以了解有关安全的更多信息。我有一些后台进程在服务器端运行,有时它们需要向连接的客户端发送未经提示的消息。这意味着我需要从任何特定请求之外引用SocketHub

目前,我有一个可变变量,当通道连接时,我将值传递给该变量:

let mainChannel = channel {
    join (fun ctx socketId ->
        task {
        printfn "Connected! Main Socket Id: %O" socketId
        let hub = ctx.GetService<Channels.ISocketHub>()

        webSocketHub <- Some hub // Passing the reference to a mutable variable

        task {
            do! Task.Delay 500
            let m = (socketId |> (SetChannelSocketId >> GameData))
            do! (harderSendMessage socketId "message" m "Problem sending SocketId")
            } |> ignore
        return Channels.Ok })
}
让主频道=频道{
加入(趣味ctx socketId->
任务{
printfn“已连接!主套接字Id:%O”socketId
让hub=ctx.GetService()
webSocketHub(SetChannelSocketId>>GameData))
do!(harderSendMessage socketId“message”m“发送socketId时出现问题”)
}|>忽略
返回通道(Ok})
}
然而,在我看来,应该有一种更好的方式来访问该中心——我就是想不出来