sig
  type readyState = CONNECTING | OPEN | CLOSING | CLOSED
  class type ['a] closeEvent =
    object
      method _type : Js.js_string Js.t Js.readonly_prop
      method code : int Js.readonly_prop
      method currentTarget : 'Js.t Js.optdef Js.readonly_prop
      method reason : Js.js_string Js.t Js.readonly_prop
      method srcElement : 'Js.t Js.optdef Js.readonly_prop
      method target : 'Js.t Js.optdef Js.readonly_prop
      method wasClean : bool Js.t Js.readonly_prop
    end
  class type ['a] messageEvent =
    object
      method _type : Js.js_string Js.t Js.readonly_prop
      method currentTarget : 'Js.t Js.optdef Js.readonly_prop
      method data : Js.js_string Js.t Js.readonly_prop
      method srcElement : 'Js.t Js.optdef Js.readonly_prop
      method target : 'Js.t Js.optdef Js.readonly_prop
    end
  class type webSocket =
    object ('a)
      method binaryType : Js.js_string Js.t Js.prop
      method bufferedAmount : int Js.readonly_prop
      method close : unit Js.meth
      method close_withCode : int -> unit Js.meth
      method close_withCodeAndReason :
        int -> Js.js_string Js.t -> unit Js.meth
      method extensions : Js.js_string Js.t Js.readonly_prop
      method onclick :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onclose :
        ('Js.t, 'WebSockets.closeEvent Js.t) Dom.event_listener
        Js.writeonly_prop
      method ondblclick :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondrag :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragend :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragenter :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragleave :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragover :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragstart :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondrop :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onerror :
        ('Js.t, 'Dom.event Js.t) Dom.event_listener Js.writeonly_prop
      method onkeydown :
        ('Js.t, Dom_html.keyboardEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onkeypress :
        ('Js.t, Dom_html.keyboardEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onkeyup :
        ('Js.t, Dom_html.keyboardEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmessage :
        ('Js.t, 'WebSockets.messageEvent Js.t) Dom.event_listener
        Js.writeonly_prop
      method onmousedown :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmousemove :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmouseout :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmouseover :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmouseup :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onopen :
        ('Js.t, 'Dom.event Js.t) Dom.event_listener Js.writeonly_prop
      method onscroll :
        ('Js.t, Dom_html.event Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method protocol : Js.js_string Js.t Js.readonly_prop
      method readyState : WebSockets.readyState Js.readonly_prop
      method send : Js.js_string Js.t -> unit Js.meth
      method url : Js.js_string Js.t Js.readonly_prop
    end
  val webSocket : (Js.js_string Js.t -> WebSockets.webSocket Js.t) Js.constr
  val webSocket_withProtocol :
    (Js.js_string Js.t -> Js.js_string Js.t -> WebSockets.webSocket Js.t)
    Js.constr
  val is_supported : unit -> bool
end