मैं इससॉवे में वेबस्केट पर सर्वर-पुश को कैसे कार्यान्वित करें?
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 धागे से लिखें) –