B Thibault il y a 8 ans
Parent
commit
17ed5eeaf3
2 fichiers modifiés avec 37 ajouts et 1 suppressions
  1. 23 1
      srv/src/httpServ.js
  2. 14 0
      srv/src/ircServer/ircConnection.js

+ 23 - 1
srv/src/httpServ.js

@@ -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);
 }
 

+ 14 - 0
srv/src/ircServer/ircConnection.js

@@ -0,0 +1,14 @@
+
+IrcConnection = module.exports.IrcConnection = function(sock) {
+    var _this = this;
+
+    this.sock = sock;
+    this.sock.on("data", (data) => {
+        data.toString("utf-8").split(/\r?\n/g).forEach((str) => { _this.parse(str); });
+    });
+}
+
+IrcConnection.prototype.parse = function(str) {
+    console.log("IN {" +str +"}");
+};
+