Skip to content

floraluo/xiaoqiu-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAS服务器的代理

移动硬盘做了一个小型NAS服务器。使用node通过DLNA协议访问,代理客户端的请求。

开始需求为:将硬盘里儿子的照片展示在页面上,添加某些照片的备注即修改照片的元数据信息(主要是userComment)。展示功能完成开始学习修改元数据功能的技术时,发现了几个问题,实现起来不太容易,被迫放弃修改元数据功能,仅有展示功能。修改照片元数据功能打算另外写一个工具。

**题外话:**搜索设备代码写好后,我家里支持DLNA协议访问的设备都让我搜出来了,看到【小度大金刚】的名字时,感觉有点好玩。之前在老家待产时,发现家里电视和空调都有官方app可以手机遥控。自己鼓捣一个app“一统天下”莫名觉得还是很有成就感的样子。

遇到的问题

  1. 读写图片元数据需要分析图片的格式,.jpeg/.png/.heic等等后缀名的图片格式都不一样;
  2. 远程修改NAS服务器上图片元数据(主要这一步迫使我放弃);
  3. ssdp协议查找设备时,注意精确传入服务参数;

项目目录结构

  • controllers:控制器
  • routes:路由
  • utils:工具包
    • browseroot.data发送soap请求时,需要发送的xml内容
    • Device.js关于搜索DLNA设备的封装
    • soap.js封装的发送soap请求方法
  • app.js:入口文件
  • note.md:笔记

项目说明

#使用koa2脚手架生成项目
koa2 <projectName>

#启动服务
npm start

插件

核心逻辑

怎样浏览DLNA媒体服务器

  1. 使用SSDP协议找到设备,获取到关于设备的根目录描述文件rootDesc.xml地址;
  2. 获取到rootDesc.xml文件内容,解析xml文件转化成js对象,拿到urn:upnp-org:serviceId:ContentDirectory服务的controlURL以及其他关键信息,比如设备名称等;
  3. 新建browseroot.data配置文件,读取文件内容,使用soap协议发送请求,获取到根目录的内容;
  4. 获取到根目录的ObjectId,再次发送soap请求获取子目录内容;
  5. 子目录有文件时,解析xml文件,获取到文件的信息。

参考资料:

About

使用DLNA协议访问NSA服务器的代理

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published