За последние 24 часа нас посетили 23884 программиста и 1717 роботов. Сейчас ищут 1704 программиста ...

Создание чата на node

Тема в разделе "JavaScript и AJAX", создана пользователем kiberchainik, 10 май 2018.

Метки:
  1. kiberchainik

    kiberchainik Новичок

    С нами с:
    10 май 2018
    Сообщения:
    1
    Симпатии:
    0
    на хостинге установили node открыли порт 3000 порт прослушивается, при обращении lptf.it:3000 или http://185.53.160.215:3000/ выводится сообщение Hello Node.js Server!. Казалось бы все хорошо! но! я хочу дальше создание чата, и в корне сайта создаю файлик (сервер) с кодом (пример с интернета, я новичОк):

    Код (Javascript):
    1. var express = require('express');
    2.     var app = express();
    3.     app.set('port', process.env.PORT || 3000);
    4.     app.set('host', process.env.HOST || 'localhost');
    5.    
    6.     var logger = require('log4js').getLogger();
    7.     var server = require('http').Server(app);
    8.     var io = require('socket.io')(server);
    9.     var port = 3000;
    10.  
    11.  
    12.      app.use(express.static('/home/urlyogyj/public_html/views/chat.php'));
    13.     app.get('/chat.php', function(req,res){
    14.     res.sendFile('/home/urlyogyj/public_html/views/chat.php');
    15.     });
    16.  
    17.     app.use('/fonts', express.static('/home/urlyogyj/node_modules/uikit/src/fonts/'));
    18.  
    19.      app.get('/socket.io.js', function(req,res){
    20.     res.sendFile('/home/urlyogyj/node_modules/socket.io-client/dist/socket.io.js');
    21.     });
    22.  
    23.     app.get('/jquery.js', function(req,res){
    24.     res.sendFile('/home/urlyogyj/node_modules/jquery/dist/jquery.min.js');
    25.      });
    26.  
    27.      app.get('/uikit.js', function(req,res){
    28.     res.sendFile('/home/urlyogyj/node_modules/uikit/dist/js/uikit.min.js');
    29.     });
    30.  
    31.     app.get('/uikit.css', function(req,res){
    32.     res.sendFile('/home/urlyogyj/node_modules/uikit/dist/css/uikit.almost-flat.min.css');
    33.     });
    34.  
    35.     app.get('/animate.css', function(req,res){
    36.     res.sendFile('/home/urlyogyj/node_modules/animate.css/animate.min.css');
    37.     });
    38.  
    39.     function usersCountToLog(){
    40.     logger.info('User count: '+io.engine.clientsCount);
    41.      }
    42.  
    43.      io.on('connection', function(socket){
    44.  
    45.     function setName(name){
    46.         if(name != undefined && name != ''){
    47.             socket.session = {};
    48.             socket.session.userName = name;
    49.             socket.session.address = socket.handshake.address;
    50.             socket.session.id = socket.id;        
    51.            
    52.             socket.broadcast.emit('newUser', socket.session);
    53.             socket.emit('userName', socket.session);
    54.            
    55.  
    56.             socket.emit('userList', io.length);
    57.  
    58.             logger.info('User '+socket.session.userName+' join from IP: '+socket.session.address);
    59.             usersCountToLog();
    60.             var clients = io.sockets.connected;
    61.  
    62.  
    63.             var clientsList = {}
    64.             for(var key in clients){
    65.                 if(clients[key].session)
    66.                     clientsList[key] = clients[key].session;
    67.             }
    68.            
    69.             socket.emit('clientsList', clientsList);
    70.             console.log(clientsList);
    71.         }
    72.         else
    73.             socket.emit('setName');
    74.     }
    75.     setName(null);
    76.     socket.on('setName', function(name){
    77.         if(name.length > 0)
    78.             setName(name);
    79.         else
    80.             socket.emit('setName');
    81.     });
    82.  
    83.     socket.on('message', function(msg){
    84.         if(socket.session){
    85.             if(socket.session.userName === null || socket.session.userName == '' || socket.session.userName == undefined){
    86.                 socket.emit('setName');
    87.             }else{
    88.                 logger.trace('-----------');
    89.                 logger.trace('User: ' + socket.session.userName + ' |
    90.    Message: ' + msg);
    91.                 logger.trace('====> Sending message to other chaters...');
    92.  
    93.                 socket.broadcast.emit('messageFromClients', msg,
    94.     socket.session.userName);
    95.                 socket.emit('messageToClients', msg,    
    96.     socket.session.userName);
    97.             }
    98.         }
    99.     });
    100.  
    101.     socket.on('disconnect', function(){
    102.         if(socket.session){
    103.             io.sockets.emit('userDisconnected', socket.session);
    104.             logger.info('User '+socket.session.userName+' left chat');
    105.             usersCountToLog();
    106.         }
    107.     });
    108.     });
    109.  
    110.     console.log('server started, tipa...');
    как видно по коду прописал адреса к файлам, они верные, в консоле перезапускаю сервер командой

    node /home/urlyogyj/public_html/app.js screen
    после этого обновляю адрес lptf.it:3000 и все равно без перемен, выводит Hello Node.js Server!
    я не понимаю почему, и где и как можно отслеживать ошибки.
    чего вообще хочу добиться:
    до авторизации какого-либо пользователя чат не нужен, как только пользователь авторизовывается на сайте, открывается сокет и на сайте для всех остальных пользователей и гостей видна надпись что тот авторизованный пользователь в сети, и напротив его логина появляется кнопка создать чат, но только для авторизованых пользователей, при нажатии на нее открывается окошко чата, как на сайте вконтакте или фейсбуке, у получателя сообщения есть блок со списком все кто прислал ему сообщение, получатель нажимает на автора и пользователи начинают общение, каждый диалог с новым пользователь должен запускать свое окошко чата. причем этот чат существует на всех страницах сайта. после выхода пользователя через кнопку выход или закрытии вкладки сокет закрывается, а все сообщения записываются в базу данных!