59 lines
1.4 KiB
Markdown
59 lines
1.4 KiB
Markdown
# isomorphic-ws
|
|
|
|
Isomorphic implementation of WebSocket.
|
|
|
|
It uses:
|
|
- [ws](https://github.com/websockets/ws) on Node
|
|
- [global.WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) in browsers
|
|
|
|
## Limitations
|
|
|
|
Before using this module you should know that
|
|
[`ws`](https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocket)
|
|
is not perfectly API compatible with
|
|
[WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket),
|
|
you should always test your code against both Node and browsers.
|
|
|
|
Some major differences:
|
|
|
|
- no `Server` implementation in browsers
|
|
- no support for the constructor
|
|
[`options`](https://github.com/websockets/ws/blob/master/doc/ws.md#new-websocketaddress-protocols-options)
|
|
argument in browsers
|
|
|
|
## Usage
|
|
|
|
You need to install both this package and [ws](https://github.com/websockets/ws):
|
|
|
|
```
|
|
> npm i isomorphic-ws ws
|
|
```
|
|
|
|
Then just require this package:
|
|
|
|
```js
|
|
const WebSocket = require('isomorphic-ws');
|
|
|
|
const ws = new WebSocket('wss://echo.websocket.org/');
|
|
|
|
ws.onopen = function open() {
|
|
console.log('connected');
|
|
ws.send(Date.now());
|
|
};
|
|
|
|
ws.onclose = function close() {
|
|
console.log('disconnected');
|
|
};
|
|
|
|
ws.onmessage = function incoming(data) {
|
|
console.log(`Roundtrip time: ${Date.now() - data.data} ms`);
|
|
|
|
setTimeout(function timeout() {
|
|
ws.send(Date.now());
|
|
}, 500);
|
|
};
|
|
```
|
|
|
|
## License
|
|
|
|
[MIT](LICENSE)
|