能够Network.WebSockets从 snaplet 内部使用该模块会很好,但我不知道如何实际操作。
使用它的runWebSocketsSnap :: MonadSnap m => ServerApp -> m ()函数Network.WebSockets.Snap很容易在我的应用程序中包含一个简单的无状态 websocket 服务器:
routes :: [(ByteString, Handler App App ())]
routes = [ ("/ws", runWebSocketsSnap wsApp) ]
wsApp :: PendingConnection -> IO () -- this is the ServerApp type
wsApp pending = do
conn <- acceptRequest pending
forever $ do
msg <- receiveData conn
sendTextData conn ("Echo " `mappend` msg :: Text)
Run Code Online (Sandbox Code Playgroud)
但我的目标是维护 webscket 服务器的状态(例如,已连接客户端的列表,如http://jaspervdj.be/websockets/example.html)。或者,进入 snaplet 的酸状态存储会很好。
我的第一个想法是liftIO将 websocket …
我正在使用 purescript-halogen 来构建一个类似电子表格的表格(类似于Handsontable)。如果您双击一个单元格,一个 html 输入元素将呈现为相应表格单元格的子元素(并且不会为所有其他单元格呈现此类元素)。
这对卤素非常有效,只是我不知道如何自动将焦点设置到新创建的输入元素。
我尝试了该autofocus属性,但这仅适用于双击的第一个单元格。JavaScript 的focus()方法是在新元素上调用该方法,但是我不知道在卤素中更新 DOM 后如何调用它。有任何想法吗?