{"id":49042,"library":"racer-highway","title":"Racer Highway","description":"WebSocket and browserchannel transport plugin for Racer (and DerbyJS). Current stable version is 10.0.2. Release cadence is irregular; major versions drop support for older Racer versions and features. Provides real-time synchronization between server and client via WebSocket. Key differentiator: it is the standard transport layer for DerbyJS/Racer apps, supporting session handling and custom hooks. Since v10, it dropped browserchannel support and only uses pure WebSockets. It works with Racer >= 0.9 and requires Browserify for client-side bundling.","status":"active","version":"10.0.2","language":"javascript","source_language":"en","source_url":"git://github.com/derbyparty/racer-highway","tags":["javascript","derby","derbyjs","racer","racerjs","websocket"],"install":[{"cmd":"npm install racer-highway","lang":"bash","label":"npm"},{"cmd":"yarn add racer-highway","lang":"bash","label":"yarn"},{"cmd":"pnpm add racer-highway","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency: racer-highway is a transport plugin for Racer","package":"racer","optional":false}],"imports":[{"note":"CommonJS require is the correct way; ESM import may not work because package does not export ESM.","wrong":"import highway from 'racer-highway';","symbol":"default","correct":"const highway = require('racer-highway');"},{"note":"Returns an object with upgrade and maybe other handlers. Options are optional but often needed for session.","wrong":"const handlers = highway(store, options); // missing options object","symbol":"handlers","correct":"const handlers = highway(store);"},{"note":"Path must include '/lib/bundle'.","wrong":"const racerClientBundle = require('racer-highway/bundle');","symbol":"bundler","correct":"const racerClientBundle = require('racer-highway/lib/bundle');"}],"quickstart":{"code":"const http = require('http');\nconst express = require('express');\nconst session = require('express-session');\nconst Racer = require('racer');\nconst highway = require('racer-highway');\n\nconst app = express();\nconst server = http.createServer(app);\nconst store = Racer.createStore({});\n\n// Use express session middleware\napp.use(session({ secret: 'mySecret', resave: false, saveUninitialized: true }));\n\nconst handlers = highway(store, { session: true });\nserver.on('upgrade', handlers.upgrade);\n\napp.get('/', (req, res) => {\n  res.send('Hello Racer!');\n});\n\nserver.listen(3000, () => console.log('Server listening on port 3000'));","lang":"javascript","description":"Sets up an Express server with Racer store and racer-highway for WebSocket upgrade handling."},"warnings":[{"fix":"Downgrade to v9.0.0 or v8.1.0, or migrate to pure WebSocket.","message":"Browserchannel support dropped in v10.0.0. If you need browserchannel, use v8.1.0 or v9.0.0.","severity":"breaking","affected_versions":">=10.0.0"},{"fix":"Update racer to version >=0.9.","message":"racer-highway v8.0.0+ requires racer >= 0.9; v7.0.0+ requires racer >= 0.8.","severity":"breaking","affected_versions":">=8.0.0"},{"fix":"Use require('racer-highway/lib/bundle') to get the bundler function, or rely on store.bundle(...).","message":"Using require('racer-highway') in browser context is not supported. Must bundle with Browserify.","severity":"deprecated","affected_versions":"all"},{"fix":"Pass { session: sessionMiddleware } as second argument to highway().","message":"Session support must be enabled explicitly by passing { session: true } or a session middleware reference.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'0.9':74 '10.0.2':16 'app':52 'browserchannel':5,63 'browserifi':77 'bundl':82 'cadenc':18 'client':39,80 'client-sid':79 'current':12 'custom':57 'derbi':84 'derbyj':11,85 'derbyjs/racer':51 'differenti':43 'drop':23,62 'featur':30 'handl':55 'highway':2 'hook':58 'irregular':20 'javascript':83 'key':42 'layer':49 'major':21 'older':26 'plugin':7 'provid':31 'pure':68 'racer':1,9,27,73,86 'racerj':87 'real':33 'real-tim':32 'releas':17 'requir':76 'server':37 'session':54 'side':81 'sinc':59 'stabl':13 'standard':47 'support':24,53,64 'synchron':35 'time':34 'transport':6,48 'use':67 'v10':60 'version':14,22,28 'via':40 'websocket':3,41,69,88 'work':71","created_at":"2026-06-07T16:59:44.700270+00:00","updated_at":"2026-06-07T16:59:44.700270+00:00","problems":[{"fix":"Use const highway = require('racer-highway');","cause":"Incorrect import: using ESM import or wrong path.","error":"TypeError: highway is not a function"},{"fix":"Add server.on('upgrade', handlers.upgrade); after calling highway(store).","cause":"Missing server.on('upgrade', handlers.upgrade).","error":"Error: No upgrade handler registered"},{"fix":"Upgrade racer to >=0.9.","cause":"Outdated racer version.","error":"Error: Racer version mismatch: racer-highway requires racer >= 0.9 (current: 0.8.x)"}],"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/derbyparty/racer-highway#readme","github":"git://github.com/derbyparty/racer-highway","docs":null,"changelog":null,"pypi":null,"npm":"racer-highway","openapi_spec":null,"status_page":null,"smithery":null,"categories":["realtime","communication"],"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}}