我们有一个基于网络的游戏(SignalR用于通信),我们的工作量将是:
使用以下服务器是否有任何问题处理负载(假设信号器有80-90%的CPU)?
(通过长轮询我们可以很容易地做到@ 5-10%cpu)
我能写这样的东西吗?
let echo (ws: WebSocket) =
fun ctx -> socket {
let loop = ref true
while !loop do
let! message = Async.Choose (ws.read()) (inbox.Receive())
match message with
| Choice1Of2 (wsMessage) ->
match wsMessage with
| Ping, _, _ -> do! ws.send Pong [||] true
| _ -> ()
| Choice2Of2 pushMessage -> do! ws.send Text pushMessage true
}
Run Code Online (Sandbox Code Playgroud)
或者我需要2个单独的套接字循环来进行并发读写?