YUKI Hiroshi
null+****@clear*****
Fri Jan 18 16:56:01 JST 2013
YUKI Hiroshi 2013-01-18 16:56:01 +0900 (Fri, 18 Jan 2013) New Revision: 7a4388666155cc460945dd07661254ba7b344abf https://github.com/groonga/express-kotoumi/commit/7a4388666155cc460945dd07661254ba7b344abf Log: Express adaptor should be loaded by the root index.js Modified files: index.js Modified: index.js (+1 -108) =================================================================== --- index.js 2013-01-18 16:54:49 +0900 (6e964a3) +++ index.js 2013-01-18 16:56:01 +0900 (d89d5ca) @@ -1,108 +1 @@ -var express = require('express') - , app = express.application; - -var fluent = require('fluent-logger'); - -var callbacks = {}; -var socketio = null; - -function register_callback(callback) { - var res = this.message_id || 0; - res += 1; - callbacks[res] = callback; - this.message_id = res; - return res; -} - -function rest_request_handler(req, res) { - /* todo: should be abstracted */ - var message = { - body: { - params: req.params, - query: req.query, - body: req.body, - cookies: req.cookies - } - }; - if (req.query.volatile) { - res.send('accepted'); - } else { - var message_id = register_callback(function(data) { - res.contentType('application/json'); - res.send(JSON.stringify(data.body)); - }); - message["reply_to"] = { - type: "rest", - message_id: message_id - }, - } - fluent.emit('message', message); -} - -function socketio_connection_handler(socket) { - socket.on('message', function (data) { - if (data.to) { - switch (data.to.type) { - case "socketio" : - if (data.to.session_id) { - var socket = socketio.sockets.socket(data.to.session_id); - if (socket) { - socket.send(data.body); - } else { - /* closed? */ - } - } else { - /* todo: broadcast */ - } - break; - default : - var message_id = data.to.message_id; - if (callbacks[message_id]) { - callbacks[message_id](data); - delete callbacks(message_id); - } else { - /* timeout? */ - } - break; - } - } else { - var message = { - body: data - }; - if (!data.query.volatile) { - message["reply_to"] = { - type: "socketio", - session_id: socket.id; - } - } - fluent.emit('message', message); - } - }); -} - -app.kotoumi = function(name, io, opts) { - fluent.configure( - opts.fluent_tag || 'kotoumi', - {host: opts.fluent_host || 'localhost', - port: opts.fluent_port || 24224}); - if (name == '/') { - io.sockets.on('connection', socketio_connection_handler); - } else { - io.of(name).on('connection', socketio_connection_handler); - } - app.all(name + '*', rest_request_handler); - socketio = io; -} - -exports.emit = function(req, callback) { - var message = { - body: req - }; - if (callback) { - message["reply_to"] = { - type: "application", - message_id: register_callback(callback); - } - } - fluent.emit('message', message); -} +var expressAdaptor = require('./lib/express-adaptor'); -------------- next part -------------- HTML����������������������������...ダウンロード