Javascript 验证数据并将其保存到db以用于实时应用程序的正确方法
例如,我基于laravel+node.js服务器构建聊天应用程序。Javascript 验证数据并将其保存到db以用于实时应用程序的正确方法,javascript,php,node.js,laravel,socket.io,Javascript,Php,Node.js,Laravel,Socket.io,例如,我基于laravel+node.js服务器构建聊天应用程序。 创建新消息的最佳想法是什么: 向服务器发送消息->验证消息并通过node.js将其添加到数据库->向所有用户返回消息 在laravel中制作api进行验证,并使用ajax创建db->(我认为这不是最好的主意) 在laravel中生成api进行验证,db->emit msg to server->request in node.js to api in laravel->return msg to all users 其他的 我想
创建新消息的最佳想法是什么:
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');
});
我想这样做:
1-使用Node.js验证消息,并在有效时立即广播。
您可以使用Node.js事件和EventsEmitter,并对每个新消息作出反应。同样,通过这种方法,您将在消息有效时立即向所有用户广播消息
2-通过Node.js调用Laravel API将已验证的消息保存到db
一旦您的消息被广播,现在您可以通过在Node.js应用程序中调用Laravel API保存到db
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');
});
依赖于外部链接代码的答案应该包含在答案正文中,因为如果链接失效,答案在将来将变得毫无意义。谢谢您的回答。也许我在我的应用程序中使用了这种方法,但我会等待更多的解决方案。如果什么都没有发生,我接受你的答案。答案应该包含在答案正文中,因为如果链接失效,答案在将来将变得毫无意义。谢谢你的回答。也许我在我的应用程序中使用了这种方法,但我会等待更多的解决方案。如果什么都没发生,我接受你的答案。如果你正在使用node.js应用程序,为什么需要laravel?为什么只使用socket.io和node来管理消息事件并提供html文件(如果需要?@msdark我更熟悉laravel,而且我已经在其中编写了一些代码,所以我不想将所有代码传输到node。如果您使用的是node.js应用程序,为什么需要laravel?为什么只使用socket.io和node来管理messages事件并提供html文件(如果需要?@msdark我更熟悉laravel,而且我已经在其中编写了一些代码,所以我不想将所有代码传输到node。