Tienes que utilizar socket.io, en el backend haces un "escucha" que cuando un cliente envíe un mensaje, lo reciba y lo emita ya sea a todos, al mismo cliente que lo mandó, a un cliente en específico (usando tokens) o a un grupo de clientes.
Por ejemplo, en el server:
Insertar CODE, HTML o PHP:
socket.on('connection' client => {
client.on('nuevoMensaje', { remitente, cuerpo } => {
io.sockets.emit('mensaje', { remitente, cuerpo });
});
});
En el cliente (JS):
Insertar CODE, HTML o PHP:
socket.on('mensaje', { remitente, cuerpo } => {
console.log(`Nuevo mensaje! Envió: ${remitente} y dice: ${cuerpo}`);
});
Aunque tienes que, si usas PHP, mirar hacia ElephantJS también
http://elephant.io#usage