Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- /* create http server with express. FMRGJ-KR*/
- const app = require('express')();
- const http = require('http').Server(app);
- /* require socket.io and lodash. FMRGJ-KR*/
- const io = require('socket.io')(http);
- const _ = require('lodash'); // <- modulo vecchio usa "lodash" che รจ quello mantenuto https://www.npmjs.com/package/lodash
- const rooms = [];
- const users = [];
- const chatrooms = [];
- var sql = require('mssql');
- var config = {
- user: 'chat_db',
- password: '_chat',
- server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
- database: 'Chat_db',
- options: {
- encrypt: false // Use this if you're on Windows Azure
- }
- }
- app.get('/', function(req, res) {
- /* send the response to index.html file. FMRGJ-KR*/
- res.sendFile('c:\\Program Files\\iisnode\\www\\chat\\index.html');
- });
- io.on('connection', function(socket) {
- /* when connected to the server. FMRGJ-KR*/
- socket.on('connecting', function(name) {
- if (_.findIndex(users, { name: name }) !== -1) {
- let currentUser = _.find(users, { name: name });
- currentUser.socket = socket;
- return;
- }
- users.push({
- name: name,
- socket: socket
- });
- socket.broadcast.emit('online', name);
- console.log(name + " connected");
- });
- socket.on('disconnect', function() {
- for (let room of rooms) {
- let cusers = room.users;
- try {
- for (let i = cusers.length - 1; i >= 0; i--) {
- let user = cusers[i];
- if (typeof user === 'undefined') {
- cusers.splice(i, 1);
- }
- }
- let userindex = _.findIndex(cusers, {
- socket: {
- id: socket.id
- }
- });
- if (userindex !== -1) {
- console.log(cusers[userindex].name + ' disconnected from ' + room.id);
- cusers.splice(userindex, 1);
- }
- for (let cuser of cusers) {
- try {
- cuser.socket.emit('callEnded', false);
- } catch (e) {
- }
- }
- } catch (e) {
- }
- }
- for (let room of chatrooms) {
- let cusers = room.users;
- let userindex = _.findIndex(cusers, {
- socket: {
- id: socket.id
- }
- });
- if (userindex !== -1) {
- console.log(cusers[userindex].name + ' disconnected from ' + room.id);
- cusers.splice(userindex, 1);
- }
- }
- let index = _.findIndex(users, {
- socket: {
- id: socket.id
- }
- });
- if (index !== -1) {
- socket.broadcast.emit('offline', users[index].name);
- console.log(users[index].name + ' disconnected');
- users.splice(index, 1);
- }
- });
- socket.on('broadcastevent', function(_message) {
- socket.broadcast.emit('broadcastevent', _message);
- });
- socket.on('loginChatRoom', function(_message) {
- let message = JSON.parse(_message);
- // if this socket is already connected,
- // send a failed login message
- //console.log("name :" + message.name);
- //console.log("room :" + message.room + " connected");
- if (_.findIndex(chatrooms, { id: message.room }) !== -1) {
- let currentRoom = _.find(chatrooms, {
- id: message.room
- });
- let cusers = currentRoom.users;
- if (_.findIndex(cusers, { name: message.name, socket: { id: socket.id }}) !== -1) {
- //socket.emit('login_error', 'You are already connected.');
- //return;
- } else if (_.findIndex(cusers, { name: message.name }) !== -1) {
- let currentUser = _.find(cusers, {
- name: message.name
- });
- currentUser.socket = socket;
- return;
- } else {
- let fuser = _.find(users, {
- name: message.name
- });
- cusers.push(fuser);
- }
- } else {
- let cusers = [];
- let fuser = _.find(users, {
- name: message.name
- });
- cusers.push(fuser);
- chatrooms.push({
- id: message.room,
- users: cusers
- });
- }
- });
- socket.on('sendChatMessage', function(_user, message) {
- let user = JSON.parse(_user);
- let room = user.room;
- let player_id = user.player_id;
- let app_id = user.app_id;
- let family_id = user.family_id;
- let rank = user.player_rank;
- let asset_1 = user.asset_1;
- let asset_2 = user.asset_2;
- let currentRoom = _.find(chatrooms, {
- id: room
- });
- let cusers = currentRoom.users;
- let currentUser = _.find(cusers, {
- socket: {
- id: socket.id
- }
- });
- if (!currentUser) {
- return;
- }
- let contact = _.find(cusers, {
- name: user.name
- });
- if (!contact) {
- return;
- }
- sql.connect(config, function(err) {
- var request = new sql.Request();
- request.input('app_id', sql.Int, app_id);
- request.input('player_id', sql.Int, player_id);
- request.input('player_name', sql.NVarChar, currentUser.name);
- request.input('canale', sql.NVarChar, room);
- request.input('message', sql.NVarChar, message);
- request.input('rank', sql.NVarChar, rank);
- request.input('family_id', sql.Int, family_id);
- request.input('asset_1', sql.NVarChar, asset_1);
- request.input('asset_2', sql.NVarChar, asset_2);
- request.execute('ins_streaming', function(err, recordsets, returnValue) {
- });
- });
- for(let cuser of cusers) {
- try {
- cuser.socket.emit('chatMessageReceived', {
- name: currentUser.name,
- room: room,
- message: message,
- rank: rank,
- asset_1: asset_1
- });
- console.log(currentUser.name + " send msg on:" + room + " message:" + message);
- } catch (e) {}
- }
- });
- socket.on('logoutChatRoom', function(_message) {
- let message = JSON.parse(_message);
- let room = _.find(chatrooms, {
- id: message.room
- });
- let cusers = room.users;
- let userindex = _.findIndex(cusers, {
- socket: {
- id: socket.id
- }
- });
- if (userindex !== -1) {
- console.log(cusers[userindex].name + ' disconnected from ' + room.id);
- cusers.splice(userindex, 1);
- }
- });
- });
- /* waiting the server at portnumber:3000. FMRGJ-KR*/
- http.listen(3000, function() {
- console.log('listening on *:3000');
- });
- function check_general_message() {
- sql.connect(config, function(err) {
- var request = new sql.Request();
- 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) {
- console.dir(recordset);
- if (recordset.length == 1) {
- var name = recordset[0].player_name;
- var message = recordset[0].message;
- var asset_1 = recordset[0].asset_1;
- var asset_2 = recordset[0].asset_2;
- var row_id = recordset[0].row_id;
- let currentRoom = _.find(chatrooms, {
- id: "general"
- });
- let cusers = currentRoom.users;
- let currentUser = _.find(cusers, {
- socket: {
- id: socket.id
- }
- });
- if (!currentUser) {
- return;
- }
- for(let cuser of cusers) {
- try {
- cuser.socket.emit('chatMessageReceived', {
- room: room,
- message: message,
- asset_1: asset_1,
- asset_2: asset_2
- });
- console.log("General msg on:" + room + " message:" + message + " asset_1:" + asset_1 + " asset_2:" + asset_2);
- } catch (e) {}
- }
- }
- });
- });
- }
- //setInterval(check_general_message, 10*1000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement