{"id":49392,"library":"sockette","title":"Sockette","description":"Sockette is a tiny (367 bytes) WebSocket wrapper with automatic reconnection, written by lukeed. Current stable version is 2.0.6. It provides a simple API to manage WebSocket connections, including automatic reconnection with configurable timeout and max attempts. Unlike raw WebSocket or heavier libraries like Socket.IO, Sockette is minimal and does not include fallback transports or extra features. It is ESM-only since v2 and includes TypeScript definitions. The package has low release cadence (last release 2020) and is considered stable and feature-complete.","status":"active","version":"2.0.6","language":"javascript","source_language":"en","source_url":"https://github.com/lukeed/sockette","tags":["javascript","socket","reconnect","websocket","typescript"],"install":[{"cmd":"npm install sockette","lang":"bash","label":"npm"},{"cmd":"yarn add sockette","lang":"bash","label":"yarn"},{"cmd":"pnpm add sockette","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Sockette is an ESM-only package. CommonJS require() will work only if bundler supports it.","wrong":"const Sockette = require('sockette')","symbol":"Sockette","correct":"import Sockette from 'sockette'"},{"note":"TypeScript users can import the type for type annotations.","symbol":"Sockette (type)","correct":"import type Sockette from 'sockette'"},{"note":"Sockette exports SocketteOptions as a type. Use type import to avoid bundling.","wrong":"import { SocketteOptions } from 'sockette'","symbol":"SocketteOptions","correct":"import { type SocketteOptions } from 'sockette'"}],"quickstart":{"code":"import Sockette from 'sockette';\n\nconst ws = new Sockette('wss://echo.websocket.org', {\n  timeout: 5000,\n  maxAttempts: 10,\n  onopen: e => console.log('Connected!', e),\n  onmessage: e => console.log('Received:', e),\n  onreconnect: e => console.log('Reconnecting...', e),\n  onmaximum: e => console.log('Stop Attempting!', e),\n  onclose: e => console.log('Closed!', e),\n  onerror: e => console.log('Error:', e)\n});\n\nws.send('Hello, world!');\nws.json({ type: 'ping' });\n\nsetTimeout(() => ws.close(), 5000);","lang":"typescript","description":"Create a Sockette instance with event listeners, send a message and JSON, then close after 5 seconds."},"warnings":[{"fix":"Use import syntax or dynamic import if using CommonJS.","message":"Default import is ESM-only since v2; require() may break in pure Node ESM environments.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Set maxAttempts to a high value like 9999 instead of -1.","message":"Passing -1 to maxAttempts is deprecated; use Infinity or a large number instead.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Use event.target inside event handlers to get the raw WebSocket instance.","message":"Sockette does not expose the underlying WebSocket directly; access via event.target in callbacks.","severity":"gotcha","affected_versions":">=2.0.0"}],"env_vars":null,"search_vec":"'2.0.6':20 '2020':78 '367':6 'api':25 'attempt':38 'automat':11,31 'byte':7 'cadenc':75 'complet':86 'configur':34 'connect':29 'consid':81 'current':16 'definit':69 'esm':62 'esm-on':61 'extra':57 'fallback':54 'featur':58,85 'feature-complet':84 'heavier':43 'includ':30,53,67 'javascript':87 'last':76 'librari':44 'like':45 'low':73 'luke':15 'manag':27 'max':37 'minim':49 'packag':71 'provid':22 'raw':40 'reconnect':12,32,89 'releas':74,77 'simpl':24 'sinc':64 'socket':88 'socket.io':46 'sockett':1,2,47 'stabl':17,82 'timeout':35 'tini':5 'transport':55 'typescript':68,91 'unlik':39 'v2':65 'version':18 'websocket':8,28,41,90 'wrapper':9 'written':13","created_at":"2026-06-07T17:01:32.893420+00:00","updated_at":"2026-06-07T17:01:32.893420+00:00","problems":[{"fix":"Use 'import Sockette from \"sockette\"' or configure bundler to handle ESM.","cause":"Using CommonJS require() when package is ESM-only or when bundler misconfigures default export.","error":"TypeError: sockette_1.default is not a constructor"},{"fix":"Run 'npm install sockette' or 'yarn add sockette'.","cause":"Package not installed or missing from node_modules.","error":"Module not found: Can't resolve 'sockette'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/lukeed/sockette#readme","github":"https://github.com/lukeed/sockette","docs":null,"changelog":null,"pypi":null,"npm":"sockette","openapi_spec":null,"status_page":null,"smithery":null,"categories":["messaging"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}