Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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 WebSocket聊天应用程序文件上传的正确实现方法_Javascript_Php_Node.js_Sockets - Fatal编程技术网

Javascript WebSocket聊天应用程序文件上传的正确实现方法

Javascript WebSocket聊天应用程序文件上传的正确实现方法,javascript,php,node.js,sockets,Javascript,Php,Node.js,Sockets,我有一个聊天应用程序,后端是在(基于服务器)的帮助下编写的,客户端是纯香草JavaScript,从PHP生成令牌,聊天也从PHP上编写的REST API加载所有数据,我一直在上传文件 我有两个变体,第一个是REST API,只是在的帮助下发送数据,我已经实现了这个,这是一个简单的REST帖子, 它工作得很好,但我不确定这个解决方案的“正确性”,因为目前REST只为简单用户提供GET路由(也有管理路由),并且根据我的项目设计,它设置为获取用户聊天的数据,而我似乎不适合为他们制作POST路由,但最让

我有一个聊天应用程序,后端是在(基于服务器)的帮助下编写的,客户端是纯香草JavaScript,从PHP生成令牌,聊天也从PHP上编写的REST API加载所有数据,我一直在上传文件

我有两个变体,第一个是REST API,只是在的帮助下发送数据,我已经实现了这个,这是一个简单的REST帖子, 它工作得很好,但我不确定这个解决方案的“正确性”,因为目前REST只为简单用户提供GET路由(也有管理路由),并且根据我的项目设计,它设置为获取用户聊天的数据,而我似乎不适合为他们制作POST路由,但最让我担心的是,我已经有了另一种机制/解决方案,用户在其中发送消息,它是socket.io-node.js服务器,具有所有权限检查(该用户是否有权加入此聊天,向其发送信息,等等),所以REST将参与socket.io任务。除了角色分配问题之外,REST解决方案也是一种逻辑复制,在Node.js端编写的所有权限检查都必须在PHP端复制。因此,我已经开始重写通过Socket.io发送到Node.js的文件。版本1中的Socket.io接受二进制数据,所以非常简单,我只发送了一个和Node.js get,它很容易像这样存储到文件系统中

require('fs').writeFileSync(filePath, Buffer);
但在这里,我有一个问题,我没有上传进度,最重要的是,尽管所有项目部分现在都完全按照各自的角色分布(客户端将数据发送到socket.io,并从rest读取),而且我没有角色重复,但我仍然不能100%确定我解决了这个问题


所以问题是,在你们的聊天应用程序中,你们将如何以及在哪里发送你们的文件

这是基于意见的。。。我会选择always REST进行文件上传,Websocket不是为传输文件而构建的,通过使用会话共享数据访问可以简化“复制”。当您可以在php/NodeJST之间共享的会话中存储权限时,您不必从NodeJS服务器查询数据库权限。这是基于意见的。。。我会选择always REST进行文件上传,Websocket不是为传输文件而构建的,通过使用会话共享数据访问可以简化“复制”。当您可以在php/NodeJS之间共享的会话中存储权限时,不必从NodeJS服务器查询数据库权限