Advertisement
Guest User

Untitled

a guest
Sep 17th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.03 KB | None | 0 0
  1. 'use strict';
  2.  
  3. /* create http server with express. FMRGJ-KR*/
  4. const app = require('express')();
  5. const http = require('http').Server(app);
  6.  
  7. /* require socket.io and lodash. FMRGJ-KR*/
  8. const io = require('socket.io')(http);
  9. const _ = require('lodash'); // <- modulo vecchio usa "lodash" che รจ quello mantenuto https://www.npmjs.com/package/lodash
  10.  
  11. const rooms = [];
  12. const users = [];
  13. const chatrooms = [];
  14.  
  15. var sql = require('mssql');
  16. var config = {
  17. user: 'chat_db',
  18. password: '_chat',
  19. server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
  20. database: 'Chat_db',
  21. options: {
  22. encrypt: false // Use this if you're on Windows Azure
  23. }
  24. }
  25.  
  26.  
  27. app.get('/', function(req, res) {
  28. /* send the response to index.html file. FMRGJ-KR*/
  29. res.sendFile('c:\\Program Files\\iisnode\\www\\chat\\index.html');
  30. });
  31.  
  32.  
  33.  
  34. io.on('connection', function(socket) {
  35.  
  36. /* when connected to the server. FMRGJ-KR*/
  37. socket.on('connecting', function(name) {
  38.  
  39. if (_.findIndex(users, { name: name }) !== -1) {
  40. let currentUser = _.find(users, { name: name });
  41. currentUser.socket = socket;
  42. return;
  43. }
  44.  
  45. users.push({
  46. name: name,
  47. socket: socket
  48. });
  49.  
  50. socket.broadcast.emit('online', name);
  51. console.log(name + " connected");
  52.  
  53. });
  54.  
  55. socket.on('disconnect', function() {
  56. for (let room of rooms) {
  57. let cusers = room.users;
  58.  
  59. try {
  60. for (let i = cusers.length - 1; i >= 0; i--) {
  61. let user = cusers[i];
  62. if (typeof user === 'undefined') {
  63. cusers.splice(i, 1);
  64. }
  65. }
  66.  
  67. let userindex = _.findIndex(cusers, {
  68. socket: {
  69. id: socket.id
  70. }
  71. });
  72.  
  73. if (userindex !== -1) {
  74. console.log(cusers[userindex].name + ' disconnected from ' + room.id);
  75. cusers.splice(userindex, 1);
  76. }
  77.  
  78. for (let cuser of cusers) {
  79. try {
  80. cuser.socket.emit('callEnded', false);
  81. } catch (e) {
  82.  
  83. }
  84. }
  85. } catch (e) {
  86.  
  87. }
  88. }
  89.  
  90. for (let room of chatrooms) {
  91. let cusers = room.users;
  92. let userindex = _.findIndex(cusers, {
  93. socket: {
  94. id: socket.id
  95. }
  96. });
  97.  
  98. if (userindex !== -1) {
  99. console.log(cusers[userindex].name + ' disconnected from ' + room.id);
  100. cusers.splice(userindex, 1);
  101. }
  102.  
  103. }
  104.  
  105. let index = _.findIndex(users, {
  106. socket: {
  107. id: socket.id
  108. }
  109. });
  110.  
  111. if (index !== -1) {
  112. socket.broadcast.emit('offline', users[index].name);
  113. console.log(users[index].name + ' disconnected');
  114. users.splice(index, 1);
  115. }
  116.  
  117. });
  118.  
  119. socket.on('broadcastevent', function(_message) {
  120. socket.broadcast.emit('broadcastevent', _message);
  121. });
  122.  
  123. socket.on('loginChatRoom', function(_message) {
  124. let message = JSON.parse(_message);
  125. // if this socket is already connected,
  126. // send a failed login message
  127. //console.log("name :" + message.name);
  128. //console.log("room :" + message.room + " connected");
  129.  
  130. if (_.findIndex(chatrooms, { id: message.room }) !== -1) {
  131.  
  132. let currentRoom = _.find(chatrooms, {
  133. id: message.room
  134. });
  135. let cusers = currentRoom.users;
  136.  
  137. if (_.findIndex(cusers, { name: message.name, socket: { id: socket.id }}) !== -1) {
  138. //socket.emit('login_error', 'You are already connected.');
  139. //return;
  140. } else if (_.findIndex(cusers, { name: message.name }) !== -1) {
  141. let currentUser = _.find(cusers, {
  142. name: message.name
  143. });
  144. currentUser.socket = socket;
  145. return;
  146. } else {
  147. let fuser = _.find(users, {
  148. name: message.name
  149. });
  150. cusers.push(fuser);
  151. }
  152.  
  153. } else {
  154. let cusers = [];
  155. let fuser = _.find(users, {
  156. name: message.name
  157. });
  158. cusers.push(fuser);
  159. chatrooms.push({
  160. id: message.room,
  161. users: cusers
  162. });
  163.  
  164. }
  165.  
  166. });
  167.  
  168. socket.on('sendChatMessage', function(_user, message) {
  169. let user = JSON.parse(_user);
  170. let room = user.room;
  171. let player_id = user.player_id;
  172. let app_id = user.app_id;
  173. let family_id = user.family_id;
  174. let rank = user.player_rank;
  175. let asset_1 = user.asset_1;
  176. let asset_2 = user.asset_2;
  177.  
  178. let currentRoom = _.find(chatrooms, {
  179. id: room
  180. });
  181. let cusers = currentRoom.users;
  182.  
  183. let currentUser = _.find(cusers, {
  184. socket: {
  185. id: socket.id
  186. }
  187. });
  188. if (!currentUser) {
  189. return;
  190. }
  191. let contact = _.find(cusers, {
  192. name: user.name
  193. });
  194. if (!contact) {
  195. return;
  196. }
  197.  
  198. sql.connect(config, function(err) {
  199. var request = new sql.Request();
  200.  
  201. request.input('app_id', sql.Int, app_id);
  202. request.input('player_id', sql.Int, player_id);
  203. request.input('player_name', sql.NVarChar, currentUser.name);
  204. request.input('canale', sql.NVarChar, room);
  205. request.input('message', sql.NVarChar, message);
  206. request.input('rank', sql.NVarChar, rank);
  207. request.input('family_id', sql.Int, family_id);
  208. request.input('asset_1', sql.NVarChar, asset_1);
  209. request.input('asset_2', sql.NVarChar, asset_2);
  210. request.execute('ins_streaming', function(err, recordsets, returnValue) {
  211. });
  212. });
  213.  
  214. for(let cuser of cusers) {
  215. try {
  216. cuser.socket.emit('chatMessageReceived', {
  217. name: currentUser.name,
  218. room: room,
  219. message: message,
  220. rank: rank,
  221. asset_1: asset_1
  222. });
  223. console.log(currentUser.name + " send msg on:" + room + " message:" + message);
  224. } catch (e) {}
  225. }
  226.  
  227. });
  228.  
  229. socket.on('logoutChatRoom', function(_message) {
  230. let message = JSON.parse(_message);
  231. let room = _.find(chatrooms, {
  232. id: message.room
  233. });
  234. let cusers = room.users;
  235. let userindex = _.findIndex(cusers, {
  236. socket: {
  237. id: socket.id
  238. }
  239. });
  240.  
  241. if (userindex !== -1) {
  242. console.log(cusers[userindex].name + ' disconnected from ' + room.id);
  243. cusers.splice(userindex, 1);
  244. }
  245.  
  246. });
  247. });
  248.  
  249. /* waiting the server at portnumber:3000. FMRGJ-KR*/
  250. http.listen(3000, function() {
  251. console.log('listening on *:3000');
  252. });
  253.  
  254. function check_general_message() {
  255. sql.connect(config, function(err) {
  256. var request = new sql.Request();
  257.  
  258. request.query('select top 1 player_name, message, asset_1, asset_2, row_id from prosperity_chat where canale = \'GENERAL\' and sended = 0', function(err, recordset) {
  259. console.dir(recordset);
  260.  
  261. if (recordset.length == 1) {
  262. var name = recordset[0].player_name;
  263. var message = recordset[0].message;
  264. var asset_1 = recordset[0].asset_1;
  265. var asset_2 = recordset[0].asset_2;
  266. var row_id = recordset[0].row_id;
  267.  
  268. let currentRoom = _.find(chatrooms, {
  269. id: "general"
  270. });
  271. let cusers = currentRoom.users;
  272. let currentUser = _.find(cusers, {
  273. socket: {
  274. id: socket.id
  275. }
  276. });
  277. if (!currentUser) {
  278. return;
  279. }
  280. for(let cuser of cusers) {
  281. try {
  282. cuser.socket.emit('chatMessageReceived', {
  283. room: room,
  284. message: message,
  285. asset_1: asset_1,
  286. asset_2: asset_2
  287. });
  288. console.log("General msg on:" + room + " message:" + message + " asset_1:" + asset_1 + " asset_2:" + asset_2);
  289. } catch (e) {}
  290. }
  291.  
  292. }
  293.  
  294.  
  295.  
  296. });
  297. });
  298. }
  299.  
  300.  
  301. //setInterval(check_general_message, 10*1000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement