Я пытаюсь отправить приветственные сообщения пользователю после присоединения к чату. Но из-за медленной загрузки сокета / 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'&¶ms.name.trim().length>0)||!(typeof(params.room)==='string'&¶ms.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
}
});
});