update structure
This commit is contained in:
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,3 @@ | |||||||
| node_modules | node_modules/ | ||||||
| coverage | coverage/ | ||||||
| docs/ | docs/ | ||||||
							
								
								
									
										37
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								README.md
									
									
									
									
									
								
							| @@ -7,3 +7,40 @@ easy and secure websocket communication | |||||||
| ## Usage | ## Usage | ||||||
| We recommend the use of typescript. | We recommend the use of typescript. | ||||||
|  |  | ||||||
|  | ```typescript | ||||||
|  |  | ||||||
|  | // serverside | ||||||
|  | import * as smartsocket from "smartsocket" | ||||||
|  | let mySmartsocket = new smartsocket.Smartsocket({ | ||||||
|  |     port: 3000 // the port smartsocket will listen on | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | let mySocketRole = new smartsocket.SocketRole({ | ||||||
|  |     name: "someRoleName", | ||||||
|  |     passwordHash: "someHasedString" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | let mySocketFunction = new smartsocket.SocketFunction({ | ||||||
|  |     func:() => {}, the function to execute | ||||||
|  |     roles:[mySocketRole] // all roles that have access to a specific function | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | mySmartsocket.registerRole(mySocketRole); | ||||||
|  |  | ||||||
|  | // Client side | ||||||
|  | let mySmartsocketClient = new smartsocket.SmartsocketClient({ | ||||||
|  |     url: "somedomain.com", // url, note: will only work over https, no http supported. | ||||||
|  |     port: 3000 | ||||||
|  |     role:"dockerhost", // some role, in this example a dockerhost vm, | ||||||
|  |     password:"somePassword" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | let mySocketFunction2 = new smartsocket.SocketFunction({ | ||||||
|  |     func:() => {}, the function to execute | ||||||
|  |     roles: [mySocketRole] // all roles that have access to a specific function | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | mySmartsocketClient.registerFunction(mySocketFunction2); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ``` | ||||||
							
								
								
									
										1
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | export * from "./smartsocket.classes.smartsocket"; | ||||||
							
								
								
									
										6
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | "use strict"; | ||||||
|  | function __export(m) { | ||||||
|  |     for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||||||
|  | } | ||||||
|  | __export(require("./smartsocket.classes.smartsocket")); | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaUJBQWMsbUNBQW1DLENBQUMsRUFBQSJ9 | ||||||
							
								
								
									
										19
									
								
								dist/smartsocket.classes.smartsocket.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								dist/smartsocket.classes.smartsocket.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | /// <reference types="socket.io" /> | ||||||
|  | /// <reference types="q" /> | ||||||
|  | import * as plugins from "./smartsocket.plugins"; | ||||||
|  | import { Objectmap } from "lik"; | ||||||
|  | export interface ISocketObject { | ||||||
|  |     socket: SocketIO.Socket; | ||||||
|  |     authenticated: boolean; | ||||||
|  | } | ||||||
|  | export interface ISmartsocketConstructorOptions { | ||||||
|  |     port: number; | ||||||
|  | } | ||||||
|  | export declare class Smartsocket { | ||||||
|  |     io: SocketIO.Server; | ||||||
|  |     openSockets: Objectmap; | ||||||
|  |     constructor(options: ISmartsocketConstructorOptions); | ||||||
|  |     startListening: any; | ||||||
|  |     authenticateSocket(socketObjectArg: ISocketObject): plugins.q.Promise<{}>; | ||||||
|  |     closeServer: () => void; | ||||||
|  | } | ||||||
							
								
								
									
										39
									
								
								dist/smartsocket.classes.smartsocket.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								dist/smartsocket.classes.smartsocket.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | "use strict"; | ||||||
|  | const plugins = require("./smartsocket.plugins"); | ||||||
|  | // classes | ||||||
|  | const lik_1 = require("lik"); | ||||||
|  | ; | ||||||
|  | class Smartsocket { | ||||||
|  |     constructor(options) { | ||||||
|  |         this.openSockets = new lik_1.Objectmap(); | ||||||
|  |         this.closeServer = () => { | ||||||
|  |             this.io.close(); | ||||||
|  |             this.openSockets.forEach((socketObjectArg) => { | ||||||
|  |                 socketObjectArg.socket.disconnect(); | ||||||
|  |             }); | ||||||
|  |             this.openSockets.wipe(); | ||||||
|  |         }; | ||||||
|  |         this.io = plugins.socketIo(options.port); | ||||||
|  |         this.io.on('connection', (socket) => { | ||||||
|  |             let socketObject = { | ||||||
|  |                 socket: socket, | ||||||
|  |                 authenticated: false | ||||||
|  |             }; | ||||||
|  |             this.openSockets.add(socketObject); | ||||||
|  |             this.authenticateSocket(socketObject); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     ; | ||||||
|  |     authenticateSocket(socketObjectArg) { | ||||||
|  |         let done = plugins.q.defer(); | ||||||
|  |         socketObjectArg.socket.on("dataAuth", data => { | ||||||
|  |             socketObjectArg.socket.removeListener("dataAuth", () => { }); | ||||||
|  |             done.resolve(); | ||||||
|  |         }); | ||||||
|  |         socketObjectArg.socket.emit("requestAuth"); | ||||||
|  |         return done.promise; | ||||||
|  |     } | ||||||
|  |     ; | ||||||
|  | } | ||||||
|  | exports.Smartsocket = Smartsocket; | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zbWFydHNvY2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmNsYXNzZXMuc21hcnRzb2NrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFHakQsVUFBVTtBQUNWLHNCQUEwQixLQUFLLENBQUMsQ0FBQTtBQUsvQixDQUFDO0FBT0Y7SUFHSSxZQUFZLE9BQXVDO1FBRG5ELGdCQUFXLEdBQUcsSUFBSSxlQUFTLEVBQUUsQ0FBQztRQXNCOUIsZ0JBQVcsR0FBRztZQUNWLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUE4QjtnQkFDcEQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFBO1FBMUJHLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTTtZQUM1QixJQUFJLFlBQVksR0FBa0I7Z0JBQzlCLE1BQU0sRUFBRSxNQUFNO2dCQUNkLGFBQWEsRUFBRSxLQUFLO2FBQ3ZCLENBQUM7WUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztJQUVELGtCQUFrQixDQUFDLGVBQThCO1FBQzdDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUk7WUFDdEMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7QUFRTCxDQUFDO0FBL0JZLG1CQUFXLGNBK0J2QixDQUFBIn0= | ||||||
							
								
								
									
										2
									
								
								dist/smartsocket.helpers.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								dist/smartsocket.helpers.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | "use strict"; | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 | ||||||
							
								
								
									
										6
									
								
								dist/smartsocket.plugins.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dist/smartsocket.plugins.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | import "typings-global"; | ||||||
|  | export import beautylog = require("beautylog"); | ||||||
|  | export import lik = require("lik"); | ||||||
|  | export import q = require("q"); | ||||||
|  | export import socketIo = require("socket.io"); | ||||||
|  | export import taskbuffer = require("taskbuffer"); | ||||||
							
								
								
									
										8
									
								
								dist/smartsocket.plugins.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								dist/smartsocket.plugins.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | "use strict"; | ||||||
|  | require("typings-global"); | ||||||
|  | exports.beautylog = require("beautylog"); | ||||||
|  | exports.lik = require("lik"); | ||||||
|  | exports.q = require("q"); | ||||||
|  | exports.socketIo = require("socket.io"); | ||||||
|  | exports.taskbuffer = require("taskbuffer"); | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUNWLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDakMsV0FBRyxXQUFZLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNqQixnQkFBUSxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2hDLGtCQUFVLFdBQVcsWUFBWSxDQUFDLENBQUMifQ== | ||||||
| @@ -3,6 +3,7 @@ | |||||||
|   "version": "1.0.0", |   "version": "1.0.0", | ||||||
|   "description": "easy and secure websocket communication", |   "description": "easy and secure websocket communication", | ||||||
|   "main": "dist/index.js", |   "main": "dist/index.js", | ||||||
|  |   "typings":"dist/index.d.ts", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "(npmts)" |     "test": "(npmts)" | ||||||
|   }, |   }, | ||||||
| @@ -17,10 +18,18 @@ | |||||||
|   }, |   }, | ||||||
|   "homepage": "https://gitlab.com/pushrocks/smartsocket#README", |   "homepage": "https://gitlab.com/pushrocks/smartsocket#README", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |     "@types/q": "0.x.x", | ||||||
|  |     "@types/socket.io": "^1.4.26", | ||||||
|  |     "@types/socket.io-client": "^1.4.26", | ||||||
|     "beautylog": "^5.0.20", |     "beautylog": "^5.0.20", | ||||||
|     "lik": "^1.0.9", |     "lik": "^1.0.9", | ||||||
|     "q": "^1.4.1", |     "q": "^1.4.1", | ||||||
|     "socket.io": "^1.4.8", |     "socket.io": "^1.4.8", | ||||||
|  |     "socket.io-client": "^1.4.8", | ||||||
|     "taskbuffer": "^1.0.7" |     "taskbuffer": "^1.0.7" | ||||||
|  |   }, | ||||||
|  |   "devDependencies": { | ||||||
|  |     "should": "^10.0.0", | ||||||
|  |     "typings-test": "^1.0.1" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | import "typings-test"; | ||||||
|  | import "should"; | ||||||
							
								
								
									
										24
									
								
								test/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								test/test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | "use strict"; | ||||||
|  | require("typings-test"); | ||||||
|  | require("should"); | ||||||
|  | const socketIoClient = require("socket.io-client"); | ||||||
|  | const smartsocket = require("../dist/index"); | ||||||
|  | let testSmartsocket; | ||||||
|  | describe("smartsocket", function () { | ||||||
|  |     it("should create a new smartsocket", function () { | ||||||
|  |         testSmartsocket = new smartsocket.Smartsocket({ port: 3000 }); | ||||||
|  |         testSmartsocket.should.be.instanceOf(smartsocket.Smartsocket); | ||||||
|  |     }); | ||||||
|  |     it("should react to a new websocket connection", function (done) { | ||||||
|  |         this.timeout(10000); | ||||||
|  |         let socket = socketIoClient("http://localhost:3000", {}); | ||||||
|  |         socket.on("requestAuth", function () { | ||||||
|  |             console.log("server requested authentication"); | ||||||
|  |             socket.emit("dataAuth", { | ||||||
|  |                 secret: "hello" | ||||||
|  |             }); | ||||||
|  |             done(); | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQixNQUFPLGNBQWMsV0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3BELE1BQU8sV0FBVyxXQUFXLGVBQWUsQ0FBQyxDQUFDO0FBRTlDLElBQUksZUFBd0MsQ0FBQztBQUU3QyxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3BCLEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNsQyxlQUFlLEdBQUcsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxVQUFVLElBQUk7UUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixNQUFNLEVBQUUsT0FBTzthQUNsQixDQUFDLENBQUM7WUFDSCxJQUFJLEVBQUUsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQyJ9 | ||||||
							
								
								
									
										24
									
								
								test/test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								test/test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | import "typings-test"; | ||||||
|  | import "should"; | ||||||
|  | import socketIoClient = require("socket.io-client"); | ||||||
|  | import smartsocket = require("../dist/index"); | ||||||
|  |  | ||||||
|  | let testSmartsocket: smartsocket.Smartsocket; | ||||||
|  |  | ||||||
|  | describe("smartsocket", function () { | ||||||
|  |     it("should create a new smartsocket", function () { | ||||||
|  |         testSmartsocket = new smartsocket.Smartsocket({ port: 3000 }); | ||||||
|  |         testSmartsocket.should.be.instanceOf(smartsocket.Smartsocket); | ||||||
|  |     }); | ||||||
|  |     it("should react to a new websocket connection", function (done) { | ||||||
|  |         this.timeout(10000); | ||||||
|  |         let socket = socketIoClient("http://localhost:3000", {}); | ||||||
|  |         socket.on("requestAuth", function () { | ||||||
|  |             console.log("server requested authentication"); | ||||||
|  |             socket.emit("dataAuth", { | ||||||
|  |                 secret: "hello" | ||||||
|  |             }); | ||||||
|  |             done(); | ||||||
|  |         }); | ||||||
|  |     }) | ||||||
|  | }); | ||||||
| @@ -0,0 +1,4 @@ | |||||||
|  | import * as plugins from "./smartsocket.plugins"; | ||||||
|  |  | ||||||
|  | export * from "./smartsocket.classes.smartsocket"; | ||||||
|  | export * from "./smartsocket.classes.smartsocketclient"; | ||||||
|   | |||||||
| @@ -1,6 +0,0 @@ | |||||||
| import "typings-global"; |  | ||||||
| export import beautylog = require("beautylog"); |  | ||||||
| export import lik  = require("lik"); |  | ||||||
| export import q = require("q"); |  | ||||||
| export import socketIo = require("socket.io");  |  | ||||||
| export import taskbuffer = require("taskbuffer"); |  | ||||||
							
								
								
									
										50
									
								
								ts/smartsocket.classes.smartsocket.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								ts/smartsocket.classes.smartsocket.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | import * as plugins from "./smartsocket.plugins"; | ||||||
|  | import * as helpers from "./smartsocket.helpers"; | ||||||
|  |  | ||||||
|  | // classes | ||||||
|  | import { Objectmap } from "lik"; | ||||||
|  |  | ||||||
|  | export interface ISocketObject { | ||||||
|  |     group?:string, | ||||||
|  |     socket: SocketIO.Socket, | ||||||
|  |     authenticated: boolean | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export interface ISmartsocketConstructorOptions { | ||||||
|  |     port: number; | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export class Smartsocket { | ||||||
|  |     io: SocketIO.Server; | ||||||
|  |     openSockets = new Objectmap(); | ||||||
|  |     constructor(options: ISmartsocketConstructorOptions) { | ||||||
|  |         this.io = plugins.socketIo(options.port); | ||||||
|  |         this.io.on('connection', this._handleSocket); | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * the standard handler for new socket connections | ||||||
|  |      */ | ||||||
|  |     private _handleSocket(socket) { | ||||||
|  |         let socketObject: ISocketObject = { | ||||||
|  |             socket: socket, | ||||||
|  |             authenticated: false | ||||||
|  |         }; | ||||||
|  |         this.openSockets.add(socketObject); | ||||||
|  |         helpers.authenticateSocket(socketObject) | ||||||
|  |             .then(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     registerGroup(string){ | ||||||
|  |          | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     closeServer = () => { | ||||||
|  |         this.io.close(); | ||||||
|  |         this.openSockets.forEach((socketObjectArg: ISocketObject) => { | ||||||
|  |             socketObjectArg.socket.disconnect(); | ||||||
|  |         }); | ||||||
|  |         this.openSockets.wipe(); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								ts/smartsocket.classes.smartsocketclient.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								ts/smartsocket.classes.smartsocketclient.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | import * as plugins from "./smartsocket.plugins" | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * interface for class SmartsocketClient | ||||||
|  |  */ | ||||||
|  | export interface ISmartsocketClientOptions { | ||||||
|  |     port:number; | ||||||
|  |     url:string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export class SmartsocketClient { | ||||||
|  |     constructor(){ | ||||||
|  |  | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								ts/smartsocket.classes.socketrole.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								ts/smartsocket.classes.socketrole.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | import * as plugins from "./smartsocket.plugins"; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * A socketrole defines access to certain routines. | ||||||
|  |  */ | ||||||
|  | class Role { | ||||||
|  |     constructor(){ | ||||||
|  |  | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										20
									
								
								ts/smartsocket.helpers.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ts/smartsocket.helpers.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | import * as plugins from "./smartsocket.plugins"; | ||||||
|  |  | ||||||
|  | // interfaces | ||||||
|  | import {ISocketObject} from "./smartsocket.classes.smartsocket"; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * authenticate a socket | ||||||
|  |  */ | ||||||
|  | export let authenticateSocket = (socketObjectArg: ISocketObject) => { | ||||||
|  |     let done = plugins.q.defer(); | ||||||
|  |     socketObjectArg.socket.on("dataAuth", data => { | ||||||
|  |         socketObjectArg.socket.removeListener("dataAuth", () => { }); | ||||||
|  |         done.resolve(); | ||||||
|  |     }); | ||||||
|  |     socketObjectArg.socket.emit("requestAuth"); | ||||||
|  |     return done.promise; | ||||||
|  | }; | ||||||
							
								
								
									
										7
									
								
								ts/smartsocket.plugins.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								ts/smartsocket.plugins.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | import "typings-global"; | ||||||
|  | export import beautylog = require("beautylog"); | ||||||
|  | export import lik  = require("lik"); | ||||||
|  | export import q = require("q"); | ||||||
|  | export import socketIo = require("socket.io"); | ||||||
|  | export import socketIoClient = require("socket.io-client"); | ||||||
|  | export import taskbuffer = require("taskbuffer"); | ||||||
		Reference in New Issue
	
	Block a user