I would do like this:
1 - Validate msg with Node.js and immediately broadcast when valid.
You can make use of Node.js events and EventsEmitter and react to each new msg. Also with this approach you will be broadcasting the msg to all users as soon as valid.
2 - Save validated msg to db calling a Laravel API trough Node.js
Once your message has been broadcasted now you can save to db by calling a Laravel API inside your Node.js app.
var events = require('events');
var eventEmitter = new events.EventEmitter();
function saveToDb() {
// call to api here
}
function validate(msg) {
//validate msg
return valid;
}
eventEmitter.on('msgBroadcasted', saveToDb);
eventEmitter.on('msgBroadcasted', anotherFunction);
socket.on('new message', function (data) {
if (!validate(data)) { return false }
socket.broadcast.emit('new message', {
username: socket.username,
message: data
});
return eventEmitter.emit('msgBroadcasted');
});