Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 验证数据并将其保存到db以用于实时应用程序的正确方法_Javascript_Php_Node.js_Laravel_Socket.io - Fatal编程技术网

Javascript 验证数据并将其保存到db以用于实时应用程序的正确方法

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 其他的 我想

例如,我基于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
  • 其他的
  • 我想这样做:

    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');
    });
    
    我想这样做:

    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。