Play Scala WebSocket 示例项目教程

随笔3个月前发布 苏家小黎
47 0 0

Play Scala WebSocket 示例项目教程

play-scala-websocket-exampleExample Play Scala application showing WebSocket use with Akka actors项目地址:https://gitcode.com/gh_mirrors/pl/play-scala-websocket-example

1. 项目的目录结构及介绍

  1. play-scala-websocket-example/

  2. ├── app/

  3. │ ├── actors/

  4. │ │ ├── UserActor.scala

  5. │ │ └── WebSocketActor.scala

  6. │ ├── controllers/

  7. │ │ └── HomeController.scala

  8. │ ├── models/

  9. │ │ └── Message.scala

  10. │ ├── views/

  11. │ │ └── index.scala.html

  12. ├── build.sbt

  13. ├── conf/

  14. │ ├── application.conf

  15. │ ├── logback.xml

  16. │ └── routes

  17. ├── project/

  18. │ ├── build.properties

  19. │ └── plugins.sbt

  20. ├── public/

  21. │ ├── images/

  22. │ ├── javascripts/

  23. │ └── stylesheets/

  24. └── test/

  25. └── controllers/

  26. └── HomeControllerSpec.scala

目录结构介绍

  • app/: 包含应用程序的源代码。
    • actors/: 包含用于处理WebSocket连接的Akka actors。
    • controllers/: 包含控制器类,处理HTTP请求。
    • models/: 包含数据模型类。
    • views/: 包含视图模板。
  • build.sbt: 项目的构建配置文件。
  • conf/: 包含应用程序的配置文件。
    • application.conf: 主配置文件。
    • logback.xml: 日志配置文件。
    • routes: 路由配置文件。
  • project/: 包含构建相关的配置文件。
    • build.properties: 构建工具版本配置。
    • plugins.sbt: 构建插件配置。
  • public/: 包含静态资源文件。
  • test/: 包含测试代码。

2. 项目的启动文件介绍

项目的启动文件主要是 app/controllers/HomeController.scala,该文件定义了处理HTTP请求的控制器。

  1. package controllers

  2. import javax.inject._

  3. import play.api.mvc._

  4. import actors._

  5. import akka.actor._

  6. import play.api.libs.streams.ActorFlow

  7. import play.api.Play.current

  8. import play.api.libs.concurrent.Akka

  9. @Singleton

  10. class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {

  11. def index = Action { implicit request: Request[AnyContent] =>

  12. Ok(views.html.index())

  13. }

  14. def socket = WebSocket.accept[String, String] { request =>

  15. ActorFlow.actorRef { out =>

  16. WebSocketActor.props(out)

  17. }

  18. }

  19. }

启动文件介绍

  • index: 处理根路径的HTTP请求,返回首页视图。
  • socket: 处理WebSocket连接,创建并返回WebSocketActor。

3. 项目的配置文件介绍

application.conf

  1. # This is the main configuration file for the application.

  2. # https://www.playframework.com/documentation/latest/Configuration

  3. play.http.secret.key = "changeme"

  4. play.filters.enabled += "play.filters.cors.CORSFilter"

  5. play.filters.cors {

  6. allowedOrigins = ["http://localhost:9000"]

  7. allowedHttpMethods = ["GET", "POST"]

  8. allowedHttpHeaders = ["Accept", "Content-Type", "Origin", "X-Requested-With"]

  9. }

配置文件介绍

  • play.http.secret.key: 应用程序的密钥,用于加密和签名。
  • play.filters.enabled: 启用CORS过滤器。
  • play.filters.cors: 配置CORS过滤器,允许特定的源、HTTP方法和HTTP头。

logback.xml

  1. <configuration>

  2. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

  3. <encoder>

  4. <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>

  5. </encoder>

  6. </appender>

  7. <root level="DEBUG">

  8. <appender-ref ref="STDOUT" />

  9. </root>

  10. </configuration>

日志配置文件介绍

  • **

play-scala-websocket-exampleExample Play Scala application showing WebSocket use with Akka actors项目地址:https://gitcode.com/gh_mirrors/pl/play-scala-websocket-example

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...