【发布时间】:2016-09-25 06:07:24
【问题描述】:
这是关于将 WebSocket 的输入和输出连接到协程的尝试。
以下函数接受 Connection,然后在收到消息时将其设置为 emit 协程值。
module Main where
import Prelude
import Control.Coroutine (emit, Producer, Consumer, await)
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)
import Control.Monad.Eff.Var (($=))
import Control.Monad.Reader.Trans (lift)
import Control.Monad.Rec.Class (forever)
import WebSocket (WEBSOCKET, Connection(..), newWebSocket, URL(..), runMessage, runMessageEvent)
wsProducer :: Connection → Producer String (Eff _) Unit
wsProducer (Connection s) = s.onmessage $= emit <<< runMessage <<< runMessageEvent
Producer 和 Consumer 将连接到 Main(WebSocket 连接也将在那里建立),但尚未编写,因为上面的函数甚至不会类型检查。
请问如何进行类型检查?它不会进行类型检查的事实可能意味着上面的代码存在根本性的误解,如果是这样,用一个工作解决方案的代码示例进行解释将非常有帮助。
相关:this answer about Halogen and WebSockets 包含非常相似的代码。
【问题讨论】:
标签: websocket purescript