我可以写这样的事情如何通过websocket实现服务器推送?
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
}
或者我需要2个独立的插座回路并发读 - 写?
能否请您提出一个很好Async.Choose的实现对于这种情况?并关于太循环:是[这](https://github.com/SuaveIO/suave/issues/307#issuecomment-146873334)好?谢谢! –
我认为你的双循环实现有线程安全问题(从2个线程写入) –