billstclair/elm-websocket-framework package at elm-lang.org
A websocket-based client/server framework written almost entirely in Elm.
This package is the client side. The server side is in billstclair/elm-websocket-framework-server.
You design your protocol, write JSON encoders and decoders for it, the server logic to use it to transform state, and the client logic to provide a user interface, and this package does the rest.
The server side depends on Node.js.
For single-player use, and development, you can wrap your server-side code for client use, in elm-reactor if you want, then switch easily to using a real remote server.
I have used this basic technology for both my Spokes and Archmage games. I made the Archmage version by copying and modifying the Spokes version. Now that I want a server for Zephyrnot and JSMaze, it's time to wrap it as a package, embodying my experience in a form everyone can use.
See the README in the Example directory for instructions on building and running the examples.
Happy Hacking!
Bill St. Clair 31 March 2018