Skip to content

Instantly share code, notes, and snippets.

@ry
Created January 4, 2011 00:03
Show Gist options
  • Select an option

  • Save ry/764213 to your computer and use it in GitHub Desktop.

Select an option

Save ry/764213 to your computer and use it in GitHub Desktop.
new node https api
// curl -k https://localhost:8000/
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
@dshaw

dshaw commented Jan 4, 2011

Copy link
Copy Markdown

Impressively simple as always.

@rgaidot

rgaidot commented Jan 4, 2011

Copy link
Copy Markdown

yes!

@aviflax

aviflax commented Jan 4, 2011

Copy link
Copy Markdown

love it!

@tanepiper

Copy link
Copy Markdown

+2 for simplicity

@jonastemplestein

Copy link
Copy Markdown

I love this :) Good job!

@ryanmcgrath

Copy link
Copy Markdown

Awesome, can't wait to use it!

@3rd-Eden

3rd-Eden commented Jan 4, 2011

Copy link
Copy Markdown

Nice.. But wouldn't it be easier if it was directly exposed in the http module instead of separate https? eg:

var http = require("http")
,       ssl  = { key: .. , cert: .. };

var https = http.createServer( ssl, function(){})
,       http = http.createServer( function(){} );

@yyliang

yyliang commented Jan 7, 2011

Copy link
Copy Markdown

what's the difference between module tls and https?

@525c1e21-bd67-4735-ac99-b4b0e5262290

Copy link
Copy Markdown

@yyliang https is to tls as http is to net

@tj

tj commented Jan 9, 2011

Copy link
Copy Markdown

the options should be the second argument of createServer() IMO

@dshaw

dshaw commented Jan 9, 2011

Copy link
Copy Markdown

@visionmedia If options were optional, I'd agree. But, since key and cert are required config, making it the first parameter makes more sense because the requestListener function is more readable as the final parameter IMHO. Perhaps not calling the first parameter "options" would make that more clear.

@tj

tj commented Jan 9, 2011

Copy link
Copy Markdown

actually yeah i guess it depends how large your function is, I was just thinking it makes more sense for complying with the http server api, and then just tacking the options on, more elegant to support both that way

@dshaw

dshaw commented Jan 9, 2011

Copy link
Copy Markdown

Right on. Good point.

@525c1e21-bd67-4735-ac99-b4b0e5262290

Copy link
Copy Markdown

visionmedia++

@sveisvei

Copy link
Copy Markdown

Nice.

Not so sure about the options arg last. Yes, its more like the http-server api, but it just looks ugly - and feels unatural when reading and have to jump way down to read the second parameter.
Callbacks last is imho a more important "standard" to strive for.

Cheers:)

@525c1e21-bd67-4735-ac99-b4b0e5262290

Copy link
Copy Markdown

"callbacks last"++ -- it really helps when using CoffeeScript

@tj

tj commented Jan 10, 2011

Copy link
Copy Markdown

it just looks ugly? do you realize which language you are using lol think of it this way:

(useHTTPS ? https : http).createServer(callback, options)

options can be safely ignore when http, but support simple swapping for https

@creationix

Copy link
Copy Markdown

Only slight longer, but very clear and simple:

(useHTTPS ? http.createServer(callback) : https.createServer(options, callback))

@sveisvei

Copy link
Copy Markdown

In my puny head, it makes my eyes jump around more than the first example - I, imho, like when I can see input first, and then apply those to what I see inside the "output". Altough I see your point(both), for me at least input-output trumphs those now. Convince me otherwise :).

https.createServer(function(req, res){
  req.parseSomething(function(){
    req.checkSomething();
    // ....etc
    // ....etc
    // ....etc
    // ....etc
    // ....alot of code, and options down in the bottom.
  });
}, options);

@tj

tj commented Jan 11, 2011

Copy link
Copy Markdown

yeah that looks better

@tilgovi

tilgovi commented Jan 13, 2011

Copy link
Copy Markdown
(useHTTPS ? function (cb) { https.createServer(options, cb) } : http.createServer)(function (req, res) {
  res.writeHead(200);
  res.end("Don't be silly. Callbacks are always last.")
}).listen(8080);

@tj

tj commented Jan 13, 2011

Copy link
Copy Markdown

dude that is nasty lol wtf

@rikkert

rikkert commented Jan 13, 2011

Copy link
Copy Markdown

It is very sweet the way it is, just like we are used with require('http').
Great stuff tnx!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment