Last active
January 13, 2017 17:04
-
-
Save thiagoarrais/739d6f22fbc5949bc9a6a338bfeb9f7c to your computer and use it in GitHub Desktop.
version from the editor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Read more about this program in the official Elm guide: | |
-- https://guide.elm-lang.org/architecture/effects/web_sockets.html | |
import Html exposing (..) | |
import Html.Attributes exposing (..) | |
import Html.Events exposing (..) | |
import WebSocket | |
main = | |
Html.program | |
{ init = init | |
, view = view | |
, update = update | |
, subscriptions = subscriptions | |
} | |
echoServer : String | |
echoServer = | |
"wss://echo.websocket.org" | |
-- MODEL | |
type alias Model = | |
{ input : String | |
, messages : List String | |
} | |
init : (Model, Cmd Msg) | |
init = | |
(Model "" [], Cmd.none) | |
-- UPDATE | |
type Msg | |
= Input String | |
| Send | |
| NewMessage String | |
update : Msg -> Model -> (Model, Cmd Msg) | |
update msg {input, messages} = | |
case msg of | |
Input newInput -> | |
(Model newInput messages, Cmd.none) | |
Send -> | |
(Model "" messages, WebSocket.send echoServer input) | |
NewMessage str -> | |
(Model input (str :: messages), Cmd.none) | |
-- SUBSCRIPTIONS | |
subscriptions : Model -> Sub Msg | |
subscriptions model = | |
WebSocket.listen echoServer NewMessage | |
-- VIEW | |
view : Model -> Html Msg | |
view model = | |
div [] | |
[ input [onInput Input, value model.input] [] | |
, button [onClick Send] [text "Send"] | |
, div [] (List.map viewMessage (List.reverse model.messages)) | |
] | |
viewMessage : String -> Html msg | |
viewMessage msg = | |
div [] [ text msg ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment