Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

react-socket

Build Statusnpm (scoped)Coverage_Status

Discord

A react-redux inspired library to deal with websocket.

Installation

Using npm

npm i --save @mesteche/react-socket

Using yarn

yarn add @mesteche/react-socket

API

<Socket [id] [socket] [url] [protocol] [onopen] [onerror] [onmessage]>

Makes the socket available to the children, anywhere below in the tree.
An open <Socket> is required for being able to use connect() on sub-components.

Props

  • children the component down the tree. Must be an only child, if you need to have siblings, wrap them in a single component.
  • id if you want to have multiple socket connected at once, you must give them an id that will be used by connect() to identify the right socket.

If you want to instanciate the connection outside of the <Socket> component, you should pass the WebSocket instance as a prop:

  • socket An instance of WebSocket

Else the <Socket> component can create it with the following parameters as props:

  • url The url to connect to
  • protocol The protocol to use
  • onopen A function to call when the connection is established
  • onerror A function to call if an errors occurs
  • onmessage A function to call when a message is recieved (the message will be passed as an argument)

See WebSocket documentation

Example

// main.jsimportReactfrom'react'import{render}from'react-dom'importSocketfrom'react-socket'/* See connect() documentation below */importDemofrom'./Demo.js'render(<Socketurl='ws://localhost:8080'><DemoonWsMessage={msg=>console.info('message recieved',msg)}>
Send Message
</Demo></Socket>,document.querySelector('#app'))

connect(mapSendToProps)

Connects a React component to a WebSocket. Similarly to react-redux's connect(), it doesn't modify the component passed to it but returns a new component connected to the WebSocket instead.

In addition to connect the component's props to the socket's send() method, the new component will expose a onWsMessage and socketId prop, for you to register a callback when a message is recieved from the server and to select the socket you want to connect to. For instance, if you already use react-redux, you can use use react-redux's connect() on this new component to dispatch an action when a message arrives.

Arguments

  • mapSendToProps(Object or Function):
    • If an object is passed, each key is assumed to be a prop of the component, and the correspondign values are assumed to be functions that returns the data to be sent to the server. Each function will be wrapped into a send() call to the server.
    • If a function is passed, it will be given the send() function of the socket. It is expected that it returns an object containning the props. It's up to you to use send() in these props.

connectBase(mapSendToProps, [config]])

Similar to connect(), except instead of exposing onWsMessage and socketId as props on the returned component, it accepts a config argument.

Arguments

Same as connect() plus :

  • [config](Object):
    • [onWsMessage](Function): This function will be called when a message is recieved from the server, with the message as parameter.
    • [socketId](String or Symbol): The id of the socket you're targetting.

Examples

mapSendToProps as an object

In this example, 'Message' will be sent to the server when the button is clicked.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}exportdefaultconnect(mapSendToProps)(Demo)
mapSendToProps as a function

This Example is similar to the previous one but mapSendToProps is used as a function.

// Demo.jsimportReactfrom'react'import{connect}from'react-socket'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps=send=>({sendMessage: msg=>send(msg),})exportdefaultconnect(mapSendToProps)(Demo)
usage with react-redux's connect

In this example, we use the onWsMessage prop of the connected component to listen to the server. We also use react-redux to respond to such event by dispatching an action (see redux and react-redux documentation).

// Demo.jsimportReactfrom'react'import{connectaswsConnect}from'react-socket'import{connectasRRConnect}from'react-redux'// Basic React componentexportconstDemo=({sendMessage, children})=>(<buttononClick={function(){sendMessage('Message')}}>{children}</button>)constmapSendToProps={sendMessage: msg=>msg,}constmapDispatchToProps={onWsMessage: msg=>({type: 'SERVER_MESSAGE',payload: msg.data,})}exportdefaultRRConnect(null,mapDispatchToProps)(wsConnect(mapSendToProps)(Demo))

About

A react-redux inspired library to deal with websocket.

Topics

Resources

Contributing

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages