wip: state server side; websocket
This commit is contained in:
parent
3c6a373dc9
commit
5f1d29bda3
11 changed files with 169 additions and 44 deletions
43
src/ws_client.ml
Normal file
43
src/ws_client.ml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
open Brr
|
||||
open Brr_io
|
||||
open Shared
|
||||
|
||||
let ws =
|
||||
Format.printf "create websocket@\n";
|
||||
let ws_url =
|
||||
(* TODO fix hostname *)
|
||||
Jstr.of_string "ws://localhost:3696/island/ws"
|
||||
in
|
||||
Websocket.create ws_url
|
||||
|
||||
let ws_target = Websocket.as_target ws
|
||||
|
||||
let on_event ws_event log_msg f =
|
||||
let (_ : Ev.listener) =
|
||||
Ev.listen ws_event
|
||||
(fun ev ->
|
||||
Format.printf "%s@\n" log_msg;
|
||||
f ev )
|
||||
ws_target
|
||||
in
|
||||
()
|
||||
|
||||
let to_server_msg ev =
|
||||
Format.printf "to_server_msg@.";
|
||||
let data = Message.Ev.data (Ev.as_type ev) |> Jstr.to_string in
|
||||
let state_res : (State.t, string) result = Network.unmarshal data in
|
||||
Format.printf "un-marshaled message from server yay ~ @\n";
|
||||
match state_res with
|
||||
| Error e -> failwith (Format.sprintf "action resulted in error: %s" e)
|
||||
| Ok state -> state
|
||||
|
||||
let on_update_state_message f =
|
||||
on_event Message.Ev.message "Websocket reveived message!" (fun ev ->
|
||||
f (to_server_msg ev) )
|
||||
|
||||
let send msg =
|
||||
Format.printf "send msg on websocket ~~ @\n";
|
||||
let s = Jstr.of_string (Network.marshal msg) in
|
||||
Websocket.send_string ws s;
|
||||
Format.printf "send action on websocket ~~ DONE @\n";
|
||||
()
|
||||
Loading…
Add table
Add a link
Reference in a new issue