大佬教程收集整理的这篇文章主要介绍了覆盖Node.js HTTP解析器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
普通http服务器响应:
http/1.1 200 OK
SHOUTcast服务器响应:
ICY 200 OK
同样,协议的其余部分是相同的.唯一的区别是http / 1.x与ICY.
我想扩展,子类或以某种方式修改Node的http.request()函数,以便我可以使它与SHOUTcast服务器一起使用.使用节点has been done before连接到SHOUTcast,但只能通过重新发明整个轮子.我宁愿不这样做,因为它只是一个小的协议差异.
我的问题:有没有办法做到以下其中一种?
>扩展或覆盖Node的http解析器的相关部分. (我怀疑这是可能的,因为它似乎是@L_489_7@.)
>创建我自己的代码来解析http的相关部分,但尽可能多地重用http的现有Node组件.
>创建一个简单的内部代理(或以某种方式中继数据),以便我可以在它到达Node的http解析器之前修改第一个服务器响应行.
>还有别的吗?
我也考虑使用Shred,但它没有提供流式响应的选项. (它等待整个服务器响应在触发事件之前完成,这对于数据无限期运行的流服务器不起作用.)沿着同样的路线,我尝试了Request,但它使用了Node自己的http解析器,所以我得到与原生http客户端相同的解析错误.
砰.你说对了.
使用Node.js net
object创建实际位于用户和http服务器之间的TCP服务器.如您所述,替换所有请求和响应的第一行,您可以继续按原样继续使用http服务器. (您在非标准端口上创建内部http服务器,在另一个端口上创建网络服务器,然后在两者之间链接流,使用一些代码拦截来自请求用户的第一个数据块,以及第一个块来自响应服务器的数据.)
你在Javascript中的所有代码,它都是(几乎)没@R_10_5343@bloat流.
编辑,似乎我误读了你的帖子.我看到你并没有尝试实现Node.js shoutcast服务器,而是尝试从中访问数据.净对象应该仍然有效,但不是完全相同的.
您需要使用Net.connect与指定的shoutcast服务器通信,并使用知道net.connect流的新网络服务器在它与您的http.request()之间进行代理.所以,它会像:
+---------------+ +----------+ +-----------+ +----------------+ | http.request()|--->|net.Server|--->|net.connect|--->|SHOUTcast Server| | |<---| |<---| |<---| | +---------------+ +----------+ +-----------+ +----------------+ TCP JS TCP
这就是我如何构建它.
以上是大佬教程为你收集整理的覆盖Node.js HTTP解析器全部内容,希望文章能够帮你解决覆盖Node.js HTTP解析器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。