Subversion Repository Public Repository

Nextrek

Diff Revisions 1122 vs 1123 for /socketIO/chat.js

Diff revisions: vs.
  @@ -1,3 +1,5 @@
1 + const crypto = require('crypto');
2 +
1 3 const CHAT = Symbol.for("My.App.Namespace.chat");
2 4
3 5 var globalSymbols = Object.getOwnPropertySymbols(global);
  @@ -61,30 +63,26 @@
61 63
62 64 usersMap: {},
63 65
64 - getUser(sid) {
65 - return this.usersMap[sid]
66 + getUser(id) {
67 + const user = this.usersMap[id];
68 + return {
69 + id: user.id,
70 + name: user.name
71 + }
66 72 },
67 73
68 - createUser(id, name, role) {
74 + createUser(name, role, id) {
69 75 const _this = this;
76 + const buf = crypto.randomBytes(64);
70 77 const user = {
71 78 name: name,
72 79 role: role,
73 - room: id,
74 -
75 - joinOwnerRoom: (owner) => {
76 - if (this.role === _this.ROLES.OPERATOR) {
77 - if (!_this.isUserInRoom(owner, this) && !_this.isUserInRoom(this, owner)) {
78 - _this.rooms[owner.role][owner.room].push(this);
79 - return _this.rooms[owner.role][owner.room];
80 - } else {
81 - return _this.rooms[owner.role][owner.room] || _this.rooms[this.role][this.room];
82 - }
83 - }
84 - }
80 + room: id || buf.toString('hex'),
85 81 }
86 82
87 83 this.addUser(user);
84 +
85 + return user;
88 86 },
89 87
90 88 addUser(user) {
  @@ -97,21 +95,32 @@
97 95 this.users.splice(this.users.indexOf(user), 1);
98 96 delete this.usersMap[user.room];
99 97 },
100 -
98 +
101 99 getUsersByRole(role) {
102 100 return this.users.filter((user) => {
103 101 return user.role === role
104 102 });
105 103 },
106 -
104 +
107 105 countUsersByRole(role) {
108 106 this.getUsersByRole(role).length
109 107 },
110 -
108 +
111 109 isUserInRoom(owner, guest) {
112 110 return this.rooms[owner.role][owner.room].indexOf(guest) > - 1;
113 111 },
114 112
113 + joinOwnerRoom(owner, user) {
114 + if (user && user.role === this.ROLES.OPERATOR) {
115 + if (!this.isUserInRoom(owner, user) && !this.isUserInRoom(user, owner)) {
116 + this.rooms[owner.role][owner.room].push(user);
117 + return owner.room;
118 + } else {
119 + return this.rooms[owner.role][owner.room] ? owner.room : user.room;
120 + }
121 + }
122 + },
123 +
115 124 event(type, data) {
116 125 return {
117 126 type,
  @@ -120,9 +129,9 @@
120 129 }
121 130 },
122 131
123 - message(data, room) {
132 + message(data, room, from) {
124 133 return {
125 - from: this.user,
134 + from,
126 135 room: room,
127 136 content: data.content,
128 137 contentType: data.contentType