File tree Expand file tree Collapse file tree 11 files changed +56
-44
lines changed
play-java-streaming-example Expand file tree Collapse file tree 11 files changed +56
-44
lines changed Original file line number Diff line number Diff line change 1+ package controllers ;
2+
3+ import javax .inject .Inject ;
4+
5+ import play .routing .*;
6+
7+ import play .mvc .Controller ;
8+ import play .mvc .Http ;
9+ import play .mvc .Result ;
10+
11+ public class HomeController extends Controller {
12+
13+ public Result index (final Http .Request request ) {
14+ return ok (views .html .index .render (request ));
15+ }
16+
17+ public Result javascriptRoutes (final Http .Request request ) {
18+ return ok (
19+ JavaScriptReverseRouter .create (
20+ "jsRoutes" ,
21+ "jQuery.ajax" ,
22+ request .host (),
23+ routes .javascript .JavaEventSourceController .streamClock ()
24+ )
25+ ).as ("text/javascript" );
26+ }
27+ }
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 44import play .mvc .Controller ;
55import play .mvc .Http ;
66import play .mvc .Result ;
7+ import views .html .helper .CSPNonce ;
78
89import javax .inject .Singleton ;
910
1011@ Singleton
1112public class JavaCometController extends Controller implements JavaTicker {
1213
13- public Result index () {
14- return ok (views .html .javacomet .render ());
14+ public Result index (final Http . Request request ) {
15+ return ok (views .html .javacomet .render (request ));
1516 }
1617
17- public Result streamClock () {
18- return ok ().chunked (getStringSource ().via (Comet .string ("parent.clockChanged" ))).as (Http .MimeTypes .HTML );
18+ public Result streamClock (final Http . Request request ) {
19+ return ok ().chunked (getStringSource ().via (Comet .string ("parent.clockChanged" , CSPNonce . apply ( request . asScala ()) ))).as (Http .MimeTypes .HTML );
1920 }
2021
21- public Result jsonClock () {
22- return ok ().chunked (getJsonSource ().via (Comet .json ("parent.clockChanged" ))).as (Http .MimeTypes .HTML );
22+ public Result jsonClock (final Http . Request request ) {
23+ return ok ().chunked (getJsonSource ().via (Comet .json ("parent.clockChanged" , CSPNonce . apply ( request . asScala ()) ))).as (Http .MimeTypes .HTML );
2324 }
2425
2526}
Original file line number Diff line number Diff line change 1111@ Singleton
1212public class JavaEventSourceController extends Controller implements JavaTicker {
1313
14- public Result index () {
15- return ok (views .html .javaeventsource .render ());
14+ public Result index (final Http . Request request ) {
15+ return ok (views .html .javaeventsource .render (request ));
1616 }
1717
1818 public Result streamClock () {
Original file line number Diff line number Diff line change 1- @()
1+ @()(implicit request: JRequestHeader)
22
33@main {
44
Original file line number Diff line number Diff line change 1- @()
1+ @()(implicit request: JRequestHeader)
22
33@main {
44
@@ -10,8 +10,8 @@ <h1 id="clock"></h1>
1010 Clock events are pushed from the Server using a Comet connection.
1111 </ p >
1212
13- < script src ="@routes.Assets.at( "javascripts /comet.js")"> </ script >
13+ < script @{CSPNonce.attr} src ="@routes.Assets.at( "javascripts /comet.js")"> </ script >
1414
15- < iframe id ="comet " src ="@routes.JavaCometController.streamClock().unique() "> </ iframe >
15+ < iframe id ="comet " hidden src ="@routes.JavaCometController.streamClock().unique() "> </ iframe >
1616
1717}
Original file line number Diff line number Diff line change 1- @()
1+ @()(implicit request: JRequestHeader)
22
33@main {
44 < h1 > Server Sent Event clock</ h1 >
@@ -9,5 +9,5 @@ <h1 id="clock"></h1>
99 Clock events are pushed from the Server using a Server Sent Event connection.
1010 </ p >
1111
12- < script src ="@routes.Assets.at( "javascripts /eventsource.js")"> </ script >
12+ < script @{CSPNonce.attr} src ="@routes.Assets.at( "javascripts /eventsource.js")"> </ script >
1313}
Original file line number Diff line number Diff line change 1- @(content: Html)
1+ @(content: Html)(implicit request: play.api.mvc.RequestHeader)
22
33<!DOCTYPE html>
44
77 < title > EventSource clock</ title >
88 < link rel ="stylesheet " media ="screen " href ="@routes.Assets.at( "stylesheets /main.css")">
99 < link rel ="shortcut icon " type ="image/png " href ="@routes.Assets.at( "images /favicon.png")">
10- < script src ="@routes.Assets.at( "javascripts /jquery-3.2.0.slim.js")" type="text/javascript "> </ script >
11- < script type ="text/javascript " src ="@routes.HomeController.javascriptRoutes "> </ script >
10+ < script @{CSPNonce.attr} src ="@routes.Assets.at( "javascripts /jquery-3.2.0.slim.js")" type="text/javascript "> </ script >
11+ < script @{CSPNonce.attr} type ="text/javascript " src ="@routes.HomeController.javascriptRoutes() "> </ script >
1212 </ head >
1313 < body >
1414 @content
Original file line number Diff line number Diff line change @@ -16,3 +16,8 @@ javacOptions ++= Seq(
1616 " -Xlint:deprecation" ,
1717 " -Werror"
1818)
19+
20+ TwirlKeys .templateImports ++= Seq (
21+ " play.mvc.Http.{ RequestHeader => JRequestHeader }" ,
22+ " views.html.helper.CSPNonce"
23+ )
Original file line number Diff line number Diff line change 44
55# Home page
66
7- GET / controllers.HomeController.index()
7+ GET / controllers.HomeController.index(request: Request )
88
9- GET /java/comet controllers.JavaCometController.index()
10- GET /java/comet/liveClock controllers.JavaCometController.streamClock()
9+ GET /java/comet controllers.JavaCometController.index(request: Request )
10+ GET /java/comet/liveClock controllers.JavaCometController.streamClock(request: Request )
1111
12- GET /java/eventSource controllers.JavaEventSourceController.index()
12+ GET /java/eventSource controllers.JavaEventSourceController.index(request: Request )
1313GET /java/eventSource/liveClock controllers.JavaEventSourceController.streamClock()
1414
15- GET /javascriptRoutes controllers.HomeController.javascriptRoutes
15+ GET /javascriptRoutes controllers.HomeController.javascriptRoutes(request: Request)
1616
1717# Map static resources from the /public folder to the /assets URL path
1818GET /assets/*file controllers.Assets.at(path="/public", file)
You can’t perform that action at this time.
0 commit comments