A (367 byte gzip) Sockette component for React and Preact
Note: This is a component factory for binding Lukeed's sockette library to react and preact.
This is a very light component that exposes sockette
's API via component properties.
Please note that (1) nothing is rendered to the DOM and (2) the WebSocket
is closed before unmounting!
This module exposes three module definitions:
dist/sockette-component.es.js
dist/sockette-component.js
dist/sockette-component.min.js
If using the UMD bundle, the library is exposed as socketteComponent
globally.
$ npm install --save sockette-component
Quick example that wraps Sockette within a custom component.
import { Component, createElement } from "react";
import createSocket from "sockette-component";
const Sockette = createSocket({
Component,
createElement
});
class Foobar extends Component {
state = {
socket: null
};
onOpen = ev => {
console.log("> Connected!", ev);
};
onMessage = ev => {
console.log("> Received:", ev.data);
};
onReconnect = ev => {
console.log("> Reconnecting...", ev);
};
sendMessage = _ => {
// WebSocket available in state!
this.state.ws.send("Hello, world!");
};
render() {
return (
<div class="demo">
<button onClick={this.sendMessage}>SEND</button>
<Sockette
url="wss://..."
getSocket={socket => {
this.setState({socket});
}}
maxAttempts={25}
onopen={this.onOpen}
onmessage={this.onMessage}
onreconnect={this.onReconnect}
/>
</div>
);
}
}
import { h, Component } from "preact";
import Sockette from "sockette-component";
const Sockette = createSocket({
Component,
createElement: h
});
class Foobar extends Component {
state = {
socket: null
};
onOpen = ev => {
console.log("> Connected!", ev);
};
onMessage = ev => {
console.log("> Received:", ev.data);
};
onReconnect = ev => {
console.log("> Reconnecting...", ev);
};
sendMessage = _ => {
// WebSocket available in state!
this.state.ws.send("Hello, world!");
};
render() {
return (
<div class="demo">
<button onClick={this.sendMessage}>SEND</button>
<Sockette
url="wss://..."
getSocket={socket => {
this.setState(socket);
}}
maxAttempts={25}
onopen={this.onOpen}
onmessage={this.onMessage}
onreconnect={this.onReconnect}
/>
</div>
);
}
}
Please see Sockette's Options — all props
are passed directly to sockette
.
Type: String
The URL you want to connect to — see Sockette's docs.
The active WebSocket
is sent on mount of Socket component by calling getSocket
prop callback. You can save it by any means via providing a getSocket
prop as shown in the example above. This means that you can programmatically interact with Sockette's API, including close()
, reconnect()
, send()
, etc.
When <Sockette/>
is unmounted, the WebSocket
is closed (ws.close()
).
MIT © Farzad YZ
⚛️ Minimal zero dependency lazy load images solution with a simple React Hook for all images of an element
⚛️ Minimal "optimistic UI" pattern implementation with a React Hook
Simple and minimal resume builder with react and typescript
Speed up your component creation process with React.js. Modify contents, styles of the elements and click on export button to receive your component code with your custom configurations.
Manage the Werewolf easier than ever
A persian(jalaali, jalali, shamsi) date input with picker, which allows the user to type or select the date from the picker.
An advance Jalaali (shamsi, persian) datepicker containing multiple datepicker types such as, range datepicker
My Personal Website