express-ws - WebSocket endpoints for Express applications.
WebSocket endpoints for Express applications. Lets you define WebSocket endpoints like any other type of route, and applies regular Express midddleware like for anything else.
Version 2.0 of this library contains a breaking change. Please make sure to read CHANGELOG.md before upgrading.
$ sbt clean publish-localBefore running the tests the first time, you must ensure the npm packages are installed:
$ npm installThen you can run the tests:
$ sbt testimport io.scalajs.npm.express._
import io.scalajs.npm.expressws._
import io.scalajs.util.JSONHelper._
import io.scalajs.util.ScalaJsHelper._
import scala.scalajs.js
val app = Express().withWsRouting
val expressWs = ExpressWS(app)
app.use((req: Request, res: Response, next: js.Function0[Unit]) => {
println("middleware")
req.dynamic.testing = "testing"
next()
})
app.get("/", (ws: WS, req: Request, res: Response, next: js.Function0[Unit]) => {
println(s"get route ${req.dynamic.testing}")
res.end()
})
app.ws("/", (ws: WS, req: Request) => {
ws.onMessage { msg =>
println(msg.toJson)
}
println(s"socket: ${req.dynamic.testing}")
})
app.listen(3000)To add the ExpressWS binding to your project, add the following to your build.sbt:
libraryDependencies += "io.scalajs.npm" %%% "express-ws" % "0.5.0"Optionally, you may add the Sonatype Repository resolver:
resolvers += Resolver.sonatypeRepo("releases")