Android + NodeJS:客户端 – 服务器通信
我有一些关于开发Android应用程序的问题,它应该能够与NodeJS服务器进行通信。
Android应用程序收集一些数据并将所有内容保存在.csv文件中。 现在需要将该file upload到NodeJS服务器。 NodeJS服务器应该保存文件以及将内容存储在MongoDB中。
我现在的问题是我应该如何实现Android设备和服务器之间的通信。
我知道如何使用具有DataOutputStream的HttpURLConnection将单个file upload到NodeJS服务器。 但我需要的不仅仅是上传文件,因为我需要每个Android设备的唯一标识。
我想过使用(encryption的)Google帐户的用户电子邮件地址来区分设备。 我不知道谁上传哪些数据,但我需要分别存储每个设备的数据。
问题是我不知道如何在设备和服务器之间进行通信。 如果我通过HttpURLConnection和DataOutptStream上传文件,似乎我只能上传文件,没有任何附加信息,如设备的唯一密钥。
我也想通过套接字上传文件。 但我不知道如何处理巨大的文件大小(5 MB或更多)。
我不在寻找代码片段。 我需要一些提示,以正确的方向。 希望我的问题清楚地说明了,有人可以帮助我。
在Android端使用HttpUrlConnection,在Node端使用RESTful服务器将是一个直接的select。
您可以以REST方式将信息embedded到URL中:
- pathParam:www.address.com/api/save/{clientId}/data
- queryParam:www.address.com/api/save/data?c={clientID}
每个唯一标识客户端。 这可以是你select的任何scheme。 您将不得不每次构buildHttpUrlConnection作为URI是唯一的,重要!
然后,服务器端可以路由的URL,但你认为合适的。 Node有很多包来帮助(Express,Restify等)。 基本上,你会抓住请求的主体存储到你的数据库,但其他参数也可用,所以这是一个独特的和分离的事务。
编辑:您用于RESTful处理的软件包也可以为您传输大文件。 一旦数据完全上传到服务器,处理请求就可以开始。
使用套接字几乎是一样的容易。 最困难的部分将是“制定自己的协议”,实际上可能是非常简单的。
上传1个文件在这个时候发送数据到这个sockets:
54::{filename:'myfilename.txt',length:13023,hash:'ss23vd'}xxxxxxxxxxx...
54
= JSON文本的长度
::
=长度和JSON之间的分隔符
{JSON}
=您需要的其他数据
xxx...
= 13023字节的数据
然后一旦所有的数据发送,你可以断开…或者如果你需要发送另一个文件,你知道下一组数据应该在哪里。
而且由于node.js是javascript,你已经有了很好的JSON支持来为你parsingJSON。
我会build议使用套接字吗? 可能不会。 因为如果您必须同时上传其他文件,HTTP和node.js HTTP模块可能会做得更好。 但如果你能保证什么都不会改变的话,那么为什么不呢?但是对于发展来说,这是一种不好的态度。