Skip to content

Instantly share code, notes, and snippets.

@asciidisco
Created December 31, 2013 13:12
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asciidisco/8196583 to your computer and use it in GitHub Desktop.
Save asciidisco/8196583 to your computer and use it in GitHub Desktop.
simple_koa_spdy_ws.js
var spdy = require('spdy');
var WebSocket = require('ws');
var koa = require('koa');
var fs = require('fs');
var views = require('co-views');
// spdy key data
var options = {
key: fs.readFileSync(__dirname + '/keys/server.key'),
cert: fs.readFileSync(__dirname + '/keys/server.crt'),
ca: fs.readFileSync(__dirname + '/keys/server.csr')
};
// instanciate the koa middleware
var app = koa();
// setup views, appending .ejs
// when no extname is given to render()
var render = views(__dirname + '/views', {ext: 'ejs'});
// render
app.use(function *(){
this.body = yield render('index');
});
// create spdy server
var server = spdy.createServer(options, app.callback());
// create the websocket server
var wss = new WebSocket.Server({server: server});
// websocket simple echo
wss.on('connection', function (ws) {
ws.on('message', function (message) {
ws.send(message+'');
});
});
// listen on port 443
// script must be started with sudo priviliges
server.listen(443);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment