{ init : flags -> ( model
, Platform.Cmd.Cmd msg )
, update : msg -> model -> ( model
, Platform.Cmd.Cmd msg )
, subscriptions : model -> Platform.Sub.Sub msg
}
This is the input to create a Platform.worker
{ writeResponse : HTTP.Request -> { statusCode : HTTP.StatusCode
, headers : List ( String
, Json.Encode.Value )
, body : String } -> Platform.Cmd.Cmd (FrameworkMsg msg x serverMsg)
, onHttpRequest : (Json.Encode.Value -> FrameworkMsg msg x serverMsg) -> Platform.Sub.Sub (FrameworkMsg msg x serverMsg)
, onWebsocketEvent : (Json.Encode.Value -> FrameworkMsg msg x serverMsg) -> Platform.Sub.Sub (FrameworkMsg msg x serverMsg)
, writeWebsocketMessage : Websocket.Connection -> Websocket.Key -> String -> Platform.Cmd.Cmd (FrameworkMsg msg x serverMsg)
}
A set of required ports
- `writeResponse` is your function created with your port `onHttpResponse`
port onHttpResponse : Json.Encode.Value -> Cmd msg
writeResponse =
Fullstack.Server.writeResponse onHttpResponse
- `onHttpRequest` is a port defined in your `Server.elm`
port onHttpRequest : (Json.Encode.Value -> msg) -> Sub msg
{ headerDecoder : model -> Json.Decode.Decoder header
, clientMsgDecoder : Json.Decode.Decoder clientMsg
, updateFromClient : header -> Time.Posix -> clientMsg -> model -> ( model
, Platform.Task x serverMsg )
, serverMsgEncoder : serverMsg -> Json.Encode.Value
, errorEncoder : x -> Json.Encode.Value
, routeDecoder : Url -> Maybe route
, updateFromRoute : ( HTTP.Method
, header
, Maybe route ) -> Time.Posix -> HTTP.Request -> model -> ( model
, Platform.Cmd.Cmd msg )
}
A set of required protocols.
headerDecoder
decoded value will be made available to updateFromRoute
and updateFromClient
clientMsgDecoder
decodes the request body IF request was sent from Client sendToServer
updateFromClient
is called if clientMsgDecoder
succeedsserverMsgEncoder
encodes the response body for a successful clientMsgDecoder
errorEncoder
encodes the response body for a failed clientMsgDecoder
routeDecoder
decodes a Url.Url
; if successful, updateFromRoute
will be calledupdateFromRoute
is called as long as headerDecoder
succeedsPlatform.Program flags (FrameworkModel model header) (FrameworkMsg msg x serverMsg)
Exported type to enable apps to write their type signature of main
, e.g.
main : Fullstack.Server.Program Flags ServerState RequestContext Msg Error MsgFromServer
main =
Fullstack.Server.worker { ... }
worker : { worker : PlatformWorker flags model msg, ports : Ports msg x serverMsg, protocol : Protocol msg x serverMsg clientMsg endpoint header model } -> Platform.Program flags (FrameworkModel model header) (FrameworkMsg msg x serverMsg)
Returns a Fullstack.Server program, capable of communicating with Fullstack.Client program
writeResponse : (Json.Encode.Value -> Platform.Cmd.Cmd msg) -> HTTP.Request -> { statusCode : HTTP.StatusCode, headers : List ( String, Json.Encode.Value ), body : String } -> Platform.Cmd.Cmd msg
Use this to wire up your port in your own Server.elm
port onHttpResponse : Json.Encode.Value -> Cmd msg
writeResponse =
Fullstack.Server.writeResponse onHttpResponse
writeWebsocketMessage : (Json.Encode.Value -> Platform.Cmd.Cmd msg) -> Websocket.Connection -> Websocket.Key -> String -> Platform.Cmd.Cmd msg
Use this to wire up your port in your own Server.elm
via websocket
port writeWs : Json.Encode.Value -> Cmd msg
writeWebsocketMessage =
Fullstack.Server.writeWebsocketMessage writeWs