pellest/src/ws_client.ml

42 lines
1.0 KiB
OCaml

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 server_msg : Network.server_message = Network.unmarshal data in
Format.printf "un-marshaled message from server yay ~ @\n";
server_msg
let on_update_state_message f =
on_event Message.Ev.message "Websocket reveived message!" (fun ev ->
f (to_server_msg ev) )
let send (msg : Network.client_message) =
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";
()