Я использую network-conduit и runTCPServer для питания моего застрявшего сервера.
В таком случае:
-- | Helper which represents a conduit chain for each client connection
serverApp :: Application SessionIO
serverApp appdata = do
-- blah blah blah initializer code
appSource appdata $$ decoder =$= protocol =$= encoder =$ appSink appdata
...
-- | Handles an input stream of 'Packet' objects and dispatches them
protocol :: Conduit Packet SessionIO Packet
protocol = undefined
Как часто выполняется протокол? Если бы я хотел, чтобы что-то своевременно выполнялось время от времени на клиентском сокете, было бы безопасно поместить его логику в протокол, или он вызывается только каждый раз, когда данные действительно достигают его?
Я был бы признателен, если бы вы объяснили, как работают «обратные вызовы» канала. :)
С уважением.