作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 purescript-thermite 来构建一个使用 websockets 的应用程序。这个想法是应用程序使用 websockets 连接到一些服务器并实时更新 HTML 页面。但是,我找不到将其连接到铝热剂工作流程的方法。
我有一个由 render
和 performAction
组成的 spec
。 render
可以访问 dispatch
函数。但是,我需要在渲染元素之前启动 websockets(我可以将它放入例如 main
中),但是在消息到达时我需要理想地 dispatch
一个事件从外部到组件。最好的方法是什么?
最佳答案
您的期望是渲染您的组件,获取驱动程序函数的句柄,然后设置您的 websocket 连接并使用驱动程序函数提供更新。
但是,如果您出于某种原因需要首先设置 websocket 连接,那么您将需要使用一些技巧,可能涉及到 Ref
以在设置完成后保存驱动程序功能。这样,您需要在 Ref
更新之前手动验证您没有尝试调用驱动程序函数。
更高级的解决方案可能是将您的 websocket 协议(protocol)包装成协程的形式(参见 purescript-coroutines),并在类型中明确表示任何设置阶段:
type Connection =
Aff MyEffects { initialData :: InitialData
, updateStream :: Producer (Aff MyEffects) UpdateMessage
}
这里,InitialData
代表您在设置时收到的数据,可能会传递给组件,而 UpdateMessage
代表您从服务器获取的增量更新,这将是传递给驱动函数。然后,您可以在 main
中连接所有这些。
关于Purescript 铝热剂和 websockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37287369/
我是一名优秀的程序员,十分优秀!