Невозможно отправить приветственные сообщения пользователю из-за медленной загрузки socket.io или jquery - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь отправить приветственные сообщения пользователю после присоединения к чату. Но из-за медленной загрузки сокета / jquery приветственные сообщения никогда не отображаются, когда пользователь перенаправляется со страницы входа на страницу чата. Когда пользователь уже присутствует на странице чата (вошел в систему), а затем перезагружает страницу после перезапуска сервера один раз ... отображаются приветственные сообщения.

server.js ----

const path=require('path');
var express=require('express');
var http=require('http');
var socketIO=require('socket.io');
var moment=require('moment');
var port=process.env.PORT||3000;

var app=express();

var server=http.createServer(app);
const publicPath=path.join(__dirname,'../public');
app.use(express.static(publicPath));

var io=socketIO(server);//io is a server instance

io.on('connection',(socket)=>{//socket is an object for each indivisual user
  console.log('New user connected');

  socket.on('join',(params,callback)=>{
    if(!(typeof(params.name)==='string'&&params.name.trim().length>0)||!(typeof(params.room)==='string'&&params.room.trim().length>0)){
      callback('Name and room name need to be specified as non empty string');
    }
    socket.join(params.room);//join by rooms
    socket.emit('newMessage',{From:'Admin',Text:'Welcome to the chat app!'});
    console.log('Reached here');
    socket.broadcast.to(params.room).emit('newMessage',{From:'Admin',Text:`${params.name} joined the room.`});
    callback();
  });

клиентский скрипт

var socket=io();

jQuery(document).ready(function() {

  socket.on('connect',function(){
    var params=jQuery.deparam(window.location.search);
    console.log('New connection to server made');
    socket.emit('join',params,function(err){
      if(err)
      {
        alert(err);
        window.location.href='/';
      }
      else {
        //something
      }
    });
  });
...