验证数据并将其保存到db for realtime app

时间:2016-04-27 00:45:46

标签: javascript php node.js laravel socket.io

例如,我基于laravel + node.js服务器构建聊天应用程序 创建新消息的最佳方法是什么:

  1. 向服务器发送消息 - >验证它并通过node.js将其添加到db - >将消息返回给所有用户
  2. 在laravel中进行api验证和db - >使用ajax(我认为这不是最好的主意)
  3. 在laravel中进行api验证和db - >向服务器发送消息 - >在laravel中将node.js中的请求发送到api - >将消息返回给所有用户
  4. 其他?

1 个答案:

答案 0 :(得分:2)

我会这样做:

1 - 使用Node.js验证消息,并在有效时立即广播。

您可以使用Node.js事件和EventsEmitter并对每个新的消息做出反应。此外,通过这种方法,您将尽快将msg广播给所有用户。

2 - 将经过验证的msg保存到db调用Laravel API槽Node.js

现在您的消息被广播后,您可以通过调用Node.js应用程序中的Laravel API来保存到数据库。

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');
});