# WebSocket class

Use the WebSocket interface to connect to a WebSocket, and to send and receive data on that WebSocket.

To use a WebSocket in your web app, first create a WebSocket object, passing the WebSocket URL as an argument to the constructor.

    var webSocket = new WebSocket('ws://127.0.0.1:1337/ws');

To send data on the WebSocket, use the send method.

    if (webSocket != null && webSocket.readyState == WebSocket.OPEN) {
      webSocket.send(data);
    } else {
      print('WebSocket not connected, message $data not sent');
    }

To receive data on the WebSocket, register a listener for message events.

    webSocket.onMessage.listen((MessageEvent e) {
      receivedData(e.data);
    });

The message event handler receives a MessageEvent object as its sole argument. You can also define open, close, and error handlers, as specified by `WebSocketEvents`.

For more information, see the WebSockets section of the library tour and Introducing WebSockets, an HTML5Rocks.com tutorial.

Inheritance
  - Object
  - EventTarget
  - WebSocket
Annotations
  - @SupportedBrowser(SupportedBrowser.CHROME)
  - @SupportedBrowser(SupportedBrowser.FIREFOX)
  - @SupportedBrowser(SupportedBrowser.IE, '10')
  - @SupportedBrowser(SupportedBrowser.SAFARI)
  - @Unstable()
  - @Native("WebSocket")

## Constructors

WebSocket(String url, [ Object protocols ])
  factory

## Properties

binaryType ↔ String
  read / write
bufferedAmount → int
  final
extensions → String
  final
onClose → Stream<CloseEvent>
  Stream of `close` events handled by this WebSocket.
  read-only
onError → Stream<Event>
  Stream of `error` events handled by this WebSocket.
  read-only
onMessage → Stream<MessageEvent>
  Stream of `message` events handled by this WebSocket.
  read-only
onOpen → Stream<Event>
  Stream of `open` events handled by this WebSocket.
  read-only
protocol → String
  final
readyState → int
  final
url → String
  final
hashCode → int
  The hash code for this object. [...]
  read-only, inherited
on → Events
  This is an ease-of-use accessor for event streams which should only be used when an explicit accessor is not available.
  read-only, inherited
runtimeType → Type
  A representation of the runtime type of the object.
  read-only, inherited

## Methods

close([int code, String reason ]) → void
send(dynamic data) → void
  Transmit data to the server over this connection. [...]
sendBlob(Blob data) → void
  Transmit data to the server over this connection. [...]
  @JSName('send')
sendByteBuffer(ByteBuffer data) → void
  Transmit data to the server over this connection. [...]
  @JSName('send')
sendString(String data) → void
  Transmit data to the server over this connection. [...]
  @JSName('send')
sendTypedData(TypedData data) → void
  Transmit data to the server over this connection. [...]
  @JSName('send')
addEventListener(String type, EventListener listener, [ bool useCapture ]) → void
  inherited
dispatchEvent(Event event) → bool
  inherited
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a non-existent method or property is accessed. [...]
  inherited
removeEventListener(String type, EventListener listener, [ bool useCapture ]) → void
  inherited
toString() → String
  Returns a string representation of this object.
  inherited

## Operators

operator ==(dynamic other) → bool
  The equality operator. [...]
  inherited

## Static Properties

supported → bool
  Checks if this type is supported on the current platform.
  read-only

## Constants

CLOSED → const int
  `3`
closeEvent → const EventStreamProvider<CloseEvent>
  Static factory designed to expose `close` events to event handlers that are not necessarily instances of `WebSocket`. [...]
  `const EventStreamProvider<CloseEvent>('close')`
CLOSING → const int
  `2`
CONNECTING → const int
  `0`
errorEvent → const EventStreamProvider<Event>
  Static factory designed to expose `error` events to event handlers that are not necessarily instances of `WebSocket`. [...]
  `const EventStreamProvider<Event>('error')`
messageEvent → const EventStreamProvider<MessageEvent>
  Static factory designed to expose `message` events to event handlers that are not necessarily instances of `WebSocket`. [...]
  `const EventStreamProvider<MessageEvent>('message')`
OPEN → const int
  `1`
openEvent → const EventStreamProvider<Event>
  Static factory designed to expose `open` events to event handlers that are not necessarily instances of `WebSocket`. [...]
  `const EventStreamProvider<Event>('open')`