diff options
Diffstat (limited to 'webchat/hello_web.js')
-rw-r--r-- | webchat/hello_web.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/webchat/hello_web.js b/webchat/hello_web.js new file mode 100644 index 00000000..31e106c7 --- /dev/null +++ b/webchat/hello_web.js @@ -0,0 +1,83 @@ +var fs = require('fs'); +var http = require('https'); +var sockjs = require('sockjs'); +var connect = require('connect'); +var irc = require('irc'); +var krebsimage = require('./krebs-img.js'); +var Clients = []; +Clients.broadcast = function(object) { + Clients.forEach(function(client) { + client.write(JSON.stringify(object)); + }); +} + +var irc_client = new irc.Client('irc.freenode.net', 'kweb', { + channels: ['#krebs'], + sasl: true, + secure: true, + userName: 'kweb', + realName: 'kweb', + password: fs.readFileSync(__dirname+'/irc.key').toString(), + debug: true, + showErrors: true, + port: 6697, +}); + +irc_client.on('message#krebs', function(from, message) { + console.log({ from: from, message: message }); + Clients.broadcast({ from: from, message: message }); +}); + + +var echo = sockjs.createServer(); +echo.on('connection', function(conn) { + var name = '['+conn.remoteAddress+':'+conn.remotePort+']'; + Clients.push(conn); + Clients.broadcast({from: 'system', message: name + ' has joined'}) + irc_client.say("#krebs", name + ' has joined'); +conn.write(JSON.stringify({from: 'system', message: 'hello'})) + conn.on('data', function(message) { + console.log('data:',message); + try { + var object = JSON.parse(message); + object.from = name + console.log(object.message); + irc_client.say("#krebs", name + '→' + object.message); + Clients.broadcast(object); + + } catch (error) { + console.log(error); + } + }); +conn.on('close', function() { + Clients.splice(Clients.indexOf(conn)); + Clients.broadcast({from: 'system', message: name + ' has quit'}) + irc_client.say("#krebs", name + ' has quit'); +}); +}); + +var options = { + key: fs.readFileSync(__dirname+'/server_npw.key'), + cert: fs.readFileSync(__dirname+'/server.crt'), +}; + +var app = connect() + .use(connect.logger('dev')) + .use(connect.static(__dirname+'/public')) + .use( function (req, res) { + res.writeHead(200, {'Content-Type': 'text/html'}); + res.write('<!doctype html>'); + res.write('<link rel="stylesheet" type="text/css" href="reset.css">'); + res.write('<script src="sockjs-0.3.min.js"></script>'); + res.write('<script src="jquery-2.0.3.min.js"></script>'); + res.write('<script src="client.js"></script>'); + res.write(krebsimage+'<br>'); + res.write('hello, this is result:<br>'); + res.write('<table id="chatbox"></table>'); + res.end('<input type="text" id="input"><br>'); + + }) +var server = http.createServer(options, app); +echo.installHandlers(server, {prefix:'/echo'}); +server.listen(1337, '0.0.0.0'); +console.log('Server running at https://127.0.0.1:1337/'); |