You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

browserver-client

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

browserver-client

෴ A node.js HTTP server in your browser ෴


Version published
Maintainers
1
Created

Readme

Source

෴ browserver-client ෴

This is a browserver client, for the browser.

browserver-client exposes the important bits of the node.js http API in the browser, allowing it to receive incoming HTTP requests and make outgoing HTTP requests via WebSockets.

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

Example

In index.html:

<!doctype html>
<html>
  <head>
    <title>My Browserver App</title>
    <script src="/optional/path/to/websocket-shim"></script>
    <script src="/path/to/browserver"></script>
    <script src="/app.js"></script>
  </head>
</html>

In app.js:

// to handle incoming HTTP requests,
// use the standard node.js http.Server API
var server = http.createServer(function(req, res) {
  if (req.method != "GET") {
    res.writeHead(405, {"Content-Type": "text/plain"})
    return res.end("Method not allowed")
  }

  var pathname = req.url.split("?")[0]

  if (pathname != "/hello") {
    res.writeHead(404, {"Content-Type": "text/plain"})
    return res.end("Not found.")
  }

  res.writeHead(200, {"Content-Type": "text/plain"})
  res.end("Hello, world!")
})

// establish a WebSocket (or compatible) connection,
// in this case using engine.io
var ws = new eio.Socket({host: "myserver.com"})

// bind the browserver HTTP server to the WebSocket
// and wait for connections from the browserver proxy!
server.listen(ws)

// to make outgoing HTTP requests w/o cross-domain issues,
// use http.get or http.request
http.get("http://www.google.com/index.html", function(res) {
  console.log("Google answered back!")
})

API

The browserver-client API is basically a port of the node.js http API, with a few caveats:

  • Streaming is not supported. This means a ServerRequest or ClientResponse will only emit one data event, and that multiple calls to the write method of a ServerResponse or ClientRequest will be buffered locally and sent when end is called. The data events are provided for compatibility, but aren't technically needed, since the body itself is stored on the body property of the ServerRequest or ClientResponse.

  • The aspects of the node.js implementation that don't map well to the browser (such as writeContinue and addTrailers methods, and client agents) have been omitted.

Otherwise, if there is a method or behavior that differs from what you'd expect on node.js, please file an issue.

TODO

  • Include more client tests in the phantomjs tests run for browserver-node
  • Make an exhaustive list of the HTTP APIs supported and not supported.
  • Consider enabling support for addEventListener events.

FAQs

Package last updated on 17 May 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc