Play Scala WebSocket 示例项目教程

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. 项目的目录结构及介绍

play-scala-websocket-example/
├── app/
│   ├── actors/
│   │   ├── UserActor.scala
│   │   └── WebSocketActor.scala
│   ├── controllers/
│   │   └── HomeController.scala
│   ├── models/
│   │   └── Message.scala
│   ├── views/
│   │   └── index.scala.html
├── build.sbt
├── conf/
│   ├── application.conf
│   ├── logback.xml
│   └── routes
├── project/
│   ├── build.properties
│   └── plugins.sbt
├── public/
│   ├── images/
│   ├── javascripts/
│   └── stylesheets/
└── test/
    └── controllers/
        └── 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请求的控制器。

package controllers

import javax.inject._
import play.api.mvc._
import actors._
import akka.actor._
import play.api.libs.streams.ActorFlow
import play.api.Play.current
import play.api.libs.concurrent.Akka

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

  def index = Action { implicit request: Request[AnyContent] =>
    Ok(views.html.index())
  }

  def socket = WebSocket.accept[String, String] { request =>
    ActorFlow.actorRef { out =>
      WebSocketActor.props(out)
    }
  }
}

启动文件介绍

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

3. 项目的配置文件介绍

application.conf

# This is the main configuration file for the application.
# https://www.playframework.com/documentation/latest/Configuration

play.http.secret.key = "changeme"

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

play.filters.cors {
  allowedOrigins = ["http://localhost:9000"]
  allowedHttpMethods = ["GET", "POST"]
  allowedHttpHeaders = ["Accept", "Content-Type", "Origin", "X-Requested-With"]
}

配置文件介绍

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

logback.xml

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

日志配置文件介绍

  • **

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姬虹俪Humble

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值