2022-12-11 18:58:56 +01:00
|
|
|
open Brr
|
|
|
|
|
open Brr_io
|
|
|
|
|
open Shared
|
|
|
|
|
|
|
|
|
|
let ws =
|
|
|
|
|
Format.printf "create websocket@\n";
|
|
|
|
|
let ws_url =
|
2023-01-03 23:53:05 +01:00
|
|
|
let location = Window.location G.window in
|
|
|
|
|
let host = Uri.host location |> Jstr.to_string in
|
|
|
|
|
let port =
|
|
|
|
|
Option.fold ~none:""
|
|
|
|
|
~some:(fun port -> Format.sprintf ":%d" port)
|
|
|
|
|
(Uri.port location)
|
|
|
|
|
in
|
|
|
|
|
Jstr.of_string @@ Format.sprintf "ws://%s%s/island/ws" host port
|
2022-12-11 18:58:56 +01:00
|
|
|
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
|
2022-12-26 02:06:13 +01:00
|
|
|
let server_msg : Network.server_message = Network.unmarshal data in
|
2022-12-11 18:58:56 +01:00
|
|
|
Format.printf "un-marshaled message from server yay ~ @\n";
|
2022-12-26 02:06:13 +01:00
|
|
|
server_msg
|
2022-12-11 18:58:56 +01:00
|
|
|
|
|
|
|
|
let on_update_state_message f =
|
|
|
|
|
on_event Message.Ev.message "Websocket reveived message!" (fun ev ->
|
|
|
|
|
f (to_server_msg ev) )
|
|
|
|
|
|
2022-12-26 02:06:13 +01:00
|
|
|
let send (msg : Network.client_message) =
|
2022-12-11 18:58:56 +01:00
|
|
|
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";
|
|
|
|
|
()
|