Implementing the server side
At the server level, we need to open a communication channel between the server and the browser; once the communication is open, we need to implement the message reception and broadcast it to all of the connected browsers using Actors.
Creating the web socket route
To create the route, the conf/routes
file needs to be modified by adding the following:
GET /v1/cart/events controllers.WebSockets.cartEventWS
Notice that the route is defined in the same way as a regular web service call; so, the GET
call on /v1/cart/events
is routed to the cartEventWS
method of thecontrollers.WebSockets
instance.
Next, we need to create the WebSockets
class in the controllers
package of the server module, and add the cartEventsWS
method, as follows:
@Singleton
class WebSockets @Inject()(
implicit actorSystem: ActorSystem,
materializer: Materializer,
cc: ControllerComponents) extends AbstractController(cc) {
def cartEventWS = WebSocket.accept[String, String] {
implicit request...