0

我假设大多数 Clojure 专家都看过 Rich Hickey 的 ant 演示(http://gist.github.com/1093917http://blip.tv/clojure/clojure-concurrency-819147)。如果要尝试制作同一个应用程序的分布式版本,但基于浏览器,每个浏览器控制一个蚂蚁,Clojure/ClojureScript 是否有任何东西可以帮助behave函数的事务性质(假设behave在客户端上运行)? 还是 Clojure/ClojureScript 的 STM 功能真的不适合分布式使用?

即,如果在客户端我在 (3,2) 并且想要移动到 (3,3),并且在我的客户端(浏览器)的世界中(这可能有点陈旧,与 Rich 的原始版本相同)线程有点陈旧)那个方格是空的,但是我将请求发送到服务器,在服务器的世界中那个方格是满的,ClojureScript 中是否有任何分布式 STM 可以告诉我——不,那个方格是满的并且您必须恢复该动作,因此您的下一步必须再次从(3,2)开始。在 Rich 的原始演示文稿中,它是全自动的,内置于​​ Clojure 的 STM 功能中。但是分布式,是否必须更明确,或者是否有内置的功能来做到这一点?

如果这种东西没有内置到 Clojure/ClojureScript 中,还有其他平台可能更合适吗?

4

1 回答 1

0

是的,这可以使用 Clojure(用于后端)和 ClojureScript 或 JavaScript(用于前端)轻松完成。

基本上,客户端 js 代码将使用 websockets 连接到 clojure 服务器,并且在服务器上,您可以将状态包装在一个原子中,每个客户端都可以访问该原子,并且每个客户端都通过连接的 websocket 更新有关状态......你做的类似的事情在聊天 Web 应用程序中。

对于 websocket,您可以使用Aleph

于 2012-10-11T04:12:22.917 回答