2 * Socket.io configuration
7 var moment = require('moment');
8 var config = require('./environment');
9 var User = require('../models').User;
11 function onDisconnect(socket) {
14 .findById(socket.userId)
15 .then(function(user) {
22 throw new Error('socket: anyone users found');
25 .then(function(user) {
26 console.log('socket: user offline', user.name);
28 .catch(function(err) {
32 console.log('socket: anyone users found');
36 function onConnect(socket) {
39 .findById(socket.userId)
40 .then(function(user) {
45 lastLoginAt: moment().format("YYYY-MM-DD HH:mm:ss")
48 throw new Error('socket: anyone users found');
51 .then(function(user) {
52 console.log('socket: user online', user.name);
54 // Insert sockets below
56 //Ordered alphabetically
57 require('../api/agent/agent.socket').register(socket);
58 require('../api/ami/ami.socket').register(socket);
59 require('../api/automation/automation.socket').register(socket);
60 require('../api/business_action/business_action.socket').register(socket);
61 require('../api/business_condition/business_condition.socket').register(socket);
62 require('../api/chat_application/chat_application.socket').register(socket);
63 require('../api/chat_enquiry/enquiry.socket').register(socket);
64 require('../api/chat_message/chat_message.socket').register(socket);
65 require('../api/chat_queue/chat_queue.socket').register(socket);
66 require('../api/chat_room/chat_room.socket').register(socket);
67 require('../api/chat_visitor/chat_visitor.socket').register(socket);
68 require('../api/chat_website/chat_website.socket').register(socket);
69 require('../api/company/company.socket').register(socket);
70 require('../api/contact/contact.socket').register(socket);
71 require('../api/contact_manager/contact_manager.socket').register(socket);
72 require('../api/custom_field/custom_field.socket').register(socket);
73 require('../api/dashboard/dashboard.socket').register(socket);
74 require('../api/desk_account/desk_account.socket').register(socket);
75 require('../api/desk_configuration/desk_configuration.socket').register(socket);
76 require('../api/desk_field/desk_field.socket').register(socket);
77 require('../api/event/event.socket').register(socket);
78 require('../api/fax_account/fax_account.socket').register(socket);
79 require('../api/fax_application/fax_application.socket').register(socket);
80 require('../api/fax_business_automation/fax_business_automation.socket').register(socket);
81 require('../api/fax_message/fax_message.socket').register(socket);
82 require('../api/fax_queue/fax_queue.socket').register(socket);
83 require('../api/fax_room/fax_room.socket').register(socket);
84 require('../api/freshdesk_account/freshdesk_account.socket').register(socket);
85 require('../api/freshdesk_configuration/freshdesk_configuration.socket').register(socket);
86 require('../api/freshdesk_field/freshdesk_field.socket').register(socket);
87 require('../api/integration/integration.socket').register(socket);
88 require('../api/interval/interval.socket').register(socket);
89 require('../api/mail_account/mail_account.socket').register(socket);
90 require('../api/mail_application/mail_application.socket').register(socket);
91 require('../api/mail_attachment/mail_attachment.socket').register(socket);
92 require('../api/mail_business_automation/mail_business_automation.socket').register(socket);
93 require('../api/mail_message/mail_message.socket').register(socket);
94 require('../api/mail_queue/mail_queue.socket').register(socket);
95 require('../api/mail_room/mail_room.socket').register(socket);
96 require('../api/mail_server_in/mail_server_in.socket').register(socket);
97 require('../api/mail_template/mail_template.socket').register(socket);
98 require('../api/module/module.socket').register(socket);
99 require('../api/motionbar/motionbar.socket').register(socket);
100 require('../api/default_report/default_report.socket').register(socket);
101 require('../api/custom_report/custom_report.socket').register(socket);
102 require('../api/report_tree/report_tree.socket').register(socket);
103 require('../api/report_agent/report_agent.socket').register(socket);
104 require('../api/report_chat/report_chat.socket').register(socket);
105 require('../api/report_chat_session/report_chat_session.socket').register(socket);
106 require('../api/report_integration/report_integration.socket').register(socket);
107 require('../api/report_mail/report_mail.socket').register(socket);
108 require('../api/report_mail_session/report_mail_session.socket').register(socket);
109 require('../api/report_queue/report_queue.socket').register(socket);
110 require('../api/salesforce_account/salesforce_account.socket').register(socket);
111 require('../api/salesforce_configuration/salesforce_configuration.socket').register(socket);
112 require('../api/salesforce_field/salesforce_field.socket').register(socket);
113 require('../api/setting/setting.socket').register(socket);
114 require('../api/square_odbc/square_odbc.socket').register(socket);
115 require('../api/square_project/square_project.socket').register(socket);
116 require('../api/sugarcrm_account/sugarcrm_account.socket').register(socket);
117 require('../api/sugarcrm_configuration/sugarcrm_configuration.socket').register(socket);
118 require('../api/sugarcrm_field/sugarcrm_field.socket').register(socket);
119 require('../api/tag/tag.socket').register(socket);
120 require('../api/team/team.socket.js').register(socket);
121 require('../api/trigger/trigger.socket').register(socket);
122 require('../api/trunk/trunk.socket').register(socket);
123 require('../api/user/user.socket').register(socket);
124 require('../api/update/update.socket').register(socket);
125 require('../api/upload/upload.socket').register(socket);
126 require('../api/user_has_chat_queue/user_has_chat_queue.socket').register(socket);
127 require('../api/user_has_chat_room/user_has_chat_room.socket').register(socket);
128 require('../api/user_has_fax_queue/user_has_fax_queue.socket').register(socket);
129 require('../api/user_has_mail_queue/user_has_mail_queue.socket').register(socket);
130 require('../api/user_has_team/user_has_team.socket').register(socket);
131 require('../api/user_has_voice_queue/user_has_voice_queue.socket').register(socket);
132 require('../api/variable/variable.socket').register(socket);
133 require('../api/metric/metric.socket').register(socket);
134 require('../api/voice_context/voice_context.socket').register(socket);
135 require('../api/voice_extension/voice_extension.socket').register(socket);
136 require('../api/voice_musiconhold/voice_musiconhold.socket').register(socket);
137 require('../api/voice_queue/voice_queue.socket').register(socket);
138 require('../api/voice_voicemail/voice_voicemail.socket').register(socket);
139 require('../api/xchatty/xchatty.socket').register(socket);
140 require('../api/zendesk_account/zendesk_account.socket').register(socket);
141 require('../api/zendesk_configuration/zendesk_configuration.socket').register(socket);
142 require('../api/zendesk_field/zendesk_field.socket').register(socket);
145 .catch(function(err) {
149 console.log('socket: anyone users found');
152 socket.on('info', function(data) {
153 console.info('[%s] %s', socket.address, JSON.stringify(data, null, 2));
158 module.exports = function(socketio) {
159 // socket.io (v1.x.x) is powered by debug.
160 // In order to see all the debug output, set DEBUG (in server/config/local.env.js) to including the desired scope.
162 // ex: DEBUG: "http*,socket.io:socket"
164 // We can authenticate socket.io users and access their token through socket.handshake.decoded_token
166 // 1. You will need to send the token in `client/components/socket/socket.service.js`
168 // 2. Require authentication here:
169 socketio.use(require('socketio-jwt').authorize({
170 secret: config.session.secret,
174 socketio.on('connection', function(socket) {
175 socket.address = socket.handshake.address !== null ? socket.handshake
176 .address.address + ':' + socket.handshake.address.port : process.env
179 socket.connectedAt = new Date();
180 socket.userId = socket.handshake.query.userId;
181 socket.role = socket.handshake.query.role;
182 socket.name = socket.handshake.query.name;
183 socket.source = socket.handshake.query.source;
185 // Call onDisconnect.
186 socket.on('disconnect', function() {
187 onDisconnect(socket);
188 console.info('[%s] SOCKET DISCONNECTED', socket.handshake.address);
193 console.info('[%s] SOCKET CONNECTED', socket.handshake.address);