1.3.7 • Published 2 years ago

use-socket.io-hooks v1.3.7

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Socket-io Hooks

a single instance socket-io hooks lib for react components

Why

Since most scene of socket-io are single instance, why not directly provide a react lib based entirely on a single socket instance.

Installation

$ npm i use-socket.io-hooks

Example

import { Provider, useListener, useEmit } from 'use-socket.io-hooks'

const Main = () => {
  const push = useEmit('ping')

  useListener('ping', (data) => {
    alert(data)
  })

  return <button onClick={() => push('2333')}></button>
}

const App = () => {
  return (
    <Provider url="https://localhost:8081">
      <Main />
    </Provider>
  )
}

export default App

Other Hook

useConnect

The Connect hook. not need Provider

const { connect, disconnect } = useConnect(<url:string>, <opt:string>)

useOnState

The monitored data is automatically converted to state.

const { value } = useOnState(<eventName:string>)

useMounted

import { Provider, useListener, useEmit } from 'use-socket.io-hooks'

const Main = () => {
  const push = useEmit('ping')

  useMounted(() => {
    push('2333')
  })

  useListener('ping', (data) => {
    alert(data)
  })

  return <div>listen alert ping</div>
}

Roadmap

  • lazy Connect
  • add connect hooks params
  • state store (get Event linked state)
  • more hooks (use On / Off Any, useEncryptEmit)
  • expose socket context
  • muti nsp (opinion)
  • release 1.0 and OC

Issue

if you use vite: https://github.com/vitejs/vite/issues/4798#issuecomment-925689898

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  resolve: {
    alias: {
      'xmlhttprequest-ssl':
        './node_modules/engine.io-client/lib/xmlhttprequest.js',
    },
  },
  plugins: [react()],
})
1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago