针对Scala的轻量级实时Ajax、WebSocket或类似产品

针对Scala的轻量级实时Ajax、WebSocket或类似产品,ajax,scala,websocket,web-frameworks,Ajax,Scala,Websocket,Web Frameworks,我们对实时web框架的要求包括: 轻量级框架 服务器端的scala支持 灵活的通信机制:可以是Ajax、服务器发送的事件或WebSocket 对客户端html所需的更改相对较少。 例如,使用WebSockets js库是可以的 引入重要的编译时/服务器端页面处理并非易事。例如,不接受播放路线注释 必须具有以下两方面的工作示例: 网络客户端 服务器对服务器通信 全功能构建。最好是sbt,但maven可能可以接受 我已经评估了以下框架:它们中的每一个都有一个或多个缺点,使得应用程序中的使

我们对实时web框架的要求包括:

  • 轻量级框架
  • 服务器端的scala支持
  • 灵活的通信机制:可以是Ajax、服务器发送的事件或WebSocket
  • 对客户端html所需的更改相对较少。
    • 例如,使用WebSockets js库是可以的
    • 引入重要的编译时/服务器端页面处理并非易事。例如,不接受播放路线注释
  • 必须具有以下两方面的工作示例:
    • 网络客户端
    • 服务器对服务器通信
    • 全功能构建。最好是sbt,但maven可能可以接受
我已经评估了以下框架:它们中的每一个都有一个或多个缺点,使得应用程序中的使用不尽如人意

  • 播放:有点沉重,但更重要的是,它在html页面中引入了自定义注释/处理。我们需要香草html页面

  • 喷雾:更接近标记。但是,尽管我发现了一些示例应用程序,但基于参与者的通信在这些示例中并不起作用。SimpleServer示例有一个内置的“cases”计数器(来自SimpleClient),它不能按给定的方式工作:它们当然可以正常工作。。最终

  • 气氛:缺乏实例

    • jetty,netty:缺少可在sbt或maven中构建的完整功能示例
  • socko:降价主要规定使用eclipse/scalaide来运行测试/进行开发。这对我们来说是不可能的(IJ商店)。尚不清楚如何从sbt/命令行运行示例和/或启动其服务器


我最终在Netty周围编写了大量定制代码。在它处于更好的状态后,我可以将它放在GitHub上

正在积极开发,并包含SocksJs支持。它相当轻量级,您可以直接在演员身上注释路线,它们就会在web上公开。

没有任何东西可以阻止您在Play中使用普通HTML。喷雾确实有效,尽管你的测试结果与此相反。netty确实有一个明显的例子可以用sbt构建——Play框架。@wingedsubmariner我发现的Play例子包括路由注释。如果您有指向普通html/js的指针(例如使用XmlHttpRequest或WebSocket js库方法很好),请作为答案发布,我倾向于接受。您能否详细说明“基于角色的通信不起作用”?Spray广泛使用actors,我们的项目中没有遇到任何问题。@javadba您能详细说明为什么不希望在html/js中使用任何特殊注释吗?正如WindegSubmarner所说,没有什么可以阻止您使用完整的url而不是路由注释,但这只会使您的代码更难维护(因为每次更改端点url时,您必须记住也要在html中更改它)@noziar html/客户端代码将被非常独立的代码库使用,我们希望这里没有服务器端框架的暗示。