browserver-client
所属分类:Node.js
开发工具:JavaScript
文件大小:5KB
下载次数:0
上传日期:2013-05-17 23:40:23
上 传 者:
sh-1993
说明: 浏览器中的node.js HTTP服务器
(A node.js HTTP server in your browser)
文件列表:
LICENSE.txt (1070, 2013-05-18)
browserver.js (8248, 2013-05-18)
package.json (294, 2013-05-18)
browserver-client
========================
This is a [browserver](http://browserver.org) client, for the browser.
browserver-client exposes the important bits of the [node.js](http://nodejs.org) [http API](http://nodejs.org/docs/latest/api/all.html#all_http) in the browser, allowing it to receive incoming HTTP requests and make outgoing HTTP requests via WebSockets.
This library, along with [browserver-node](https://github.com/jed/browserver-node), is all the code you need to set up your own browserver.
Example
-------
In `index.html`:
```html
My Browserver App
```
In `app.js`:
```javascript
// 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](http://nodejs.org/docs/latest/api/all.html#all_http), 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](https://github.com/jed/browserver-client/issues).
TODO
----
- Include more client tests in the phantomjs tests run for [browserver-node](https://github.com/jed/browserver-node)
- Make an exhaustive list of the HTTP APIs supported and not supported.
- Consider enabling support for `addEventListener` events.
近期下载者:
相关文件:
收藏者: