Ready to take your JavaScript development to the next level? Meet npm Enterprise - the ultimate in enterprise JavaScript. Learn more »


0.0.4 • Public • Published

෴ browserver-node ෴

Build Status

This is a browserver proxy for node.js.

Use browserver-node to create servers that act as a two-way proxies between an HTTP server and a WebSocket server, by

  • forwarding incoming HTTP requests on to WebSocket connected clients, and back.
  • forwarding incoming WebSocket messages to other HTTP servers, and back.

This library, along with browserver-client, is all the code you need to set up your own browserver.


// http, websocket, and browservers
var http   = require("http")
var engine = require("")
var brow   = require("brow")
function handler(req, res) {
  // your usual HTTP server logic
// instantiate http and websocket servers
var httpServer = http.createServer(handler)
var wsServer   = engine.attach(httpServer)
// pass each to a new browserver...
var browServer = new brow.Server({
  http: httpServer,
  ws: wsServer,
  host: "*"
// ... and start listening!
httpServer.listen(80, function() {
  // wait for incoming/outgoing browser connections...


browserver is available through npm.

npm install brow


browserver = new brow.Server(options)

This joins a WebSocket server and HTTP server, returning a new browserver instance. The options argument accepts the following properties:

  • ws: Required. Must be an instance of a WebSocket server (such as ws) or compatible shim (such as, that emits socket instances through connection events.

  • http: Optional. If specified, must be an instance of http.Server. If omitted, an instance will be instantiated and bound to port 3572 (the Unicode codepoint for the brow ).

  • host Optional. If specified, must be a string containing one and only one asterisk (*), which is replaced with a socket id when a WebSocket connection is established. Note that this means you will need a wildcard CNAME or A record in your DNS settings that resolves to the appropriate domain or IP address. If omitted, CloudFoundry's * domain is used, which resolves all domains/subdomains to

browserver.on("connection", function(client){ ... })

The browserver server emits a connection event with a WebSocket-connected browserver client, whenever one connects. Each client is an instance of brow.Client, with an id property that defaults to a random lowercase alphanumeric string generated upon instantiation. How these ids are generated can be customized by overriding the static method.

client.on("close", function(){ ... })

browserver clients emit a close event when their underlying WebSocket is closed.


  • Add integrated hooks for authorization and authentication of requests, both incoming and outgoing.




npm i brow

Downloadsweekly downloads









last publish


  • avatar
Report a vulnerability