|
|
@@ -4,6 +4,7 @@ const http = require("http")
|
|
|
,Url = require("./url.js").Url
|
|
|
,config = require("../config.js")
|
|
|
,sessionManager = require("./session.js").SessionManager
|
|
|
+ ,IrcConnection = require("./ircServer/ircConnection.js").IrcConnection
|
|
|
,AccountController = require("./controller/accountController.js").AccountController
|
|
|
,ApiController = require("./controller/apiController.js").ApiController
|
|
|
,MultiChatManager = require("./multichatManager.js").MultiChatManager
|
|
|
@@ -13,7 +14,8 @@ const http = require("http")
|
|
|
,FaviconWriter = require("./faviconWriter.js").FaviconWriter;
|
|
|
|
|
|
function Server() {
|
|
|
- var ctx = this;
|
|
|
+ var ctx = this,
|
|
|
+ errSocks = [];
|
|
|
|
|
|
this.httpServ = http.createServer(function(req, res) {
|
|
|
res.ended = false;
|
|
|
@@ -22,6 +24,26 @@ function Server() {
|
|
|
});
|
|
|
ctx.onRequest(req, res);
|
|
|
});
|
|
|
+ this.httpServ.on("connection", (sock) => {
|
|
|
+ sock.on("data", (data) => {
|
|
|
+ var dataStrArr = data.toString("utf-8").split(/\r?\n/g);
|
|
|
+ for (var i =0, nbLines =dataStrArr.length; i < nbLines; i++)
|
|
|
+ if ((/^NICK /).test(dataStrArr[i])) {
|
|
|
+ var i = errSocks.indexOf(sock);
|
|
|
+ errSocks.splice(i, 1);
|
|
|
+ var con = new IrcConnection(sock);
|
|
|
+ dataStrArr.forEach((str) => { con.parse(str); });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.httpServ.on("clientError", (err, sock) => {
|
|
|
+ errSocks.push(sock);
|
|
|
+ setTimeout(() => {
|
|
|
+ if (errSocks.indexOf(sock) !== -1)
|
|
|
+ sock.end();
|
|
|
+ }, 1);
|
|
|
+ });
|
|
|
this.httpServ.listen(config.port, ctx.onListen);
|
|
|
}
|
|
|
|