nodejs中的RTMP实现是可能的?

我试图在Node.js中做一个RTMP的实现,但看到文档和尝试后,我无法,我怀疑这是不可能的,使它看到如何node.js处理数据stream。

我分叉这个代码: https : //github.com/timwhitlock/node-amf/tree/master/node-rtmp

根据代码和写得不好的adobe文档,在连接之后,握手过程开始,客户端发送一个1537字节的stream,其中第一个是rtmp版本(应该总是3),以下4个是时间戳另外4个应该是0(0000),其余的数据都是随机字符。

现在,链接库完成了所有这些工作,但是在检查4个零点的时候就会被破坏。 它使用Net模块创build一个服务器,并监听连接事件。 使用事件提供的套接字对象,设置编码为“二进制”(这种types的编码不存在,因为我看到在文档http://nodejs.org/api/stream.html#stream_stream_setencoding_encoding ),然后尝试检查四个零

我怀疑套接字编码在'utf8'反正,并且有什么地方stream打乱,因为打印的第一个字节,是从来没有相同的数据。 改变为hex编码的套接字,我发现匹配,这将表明我正在寻找的四个零:

V | TIME |4 ZEROS |RANDOM DATA 03|0091c3ee|80000702|3e904115 03|0091ea60|80000702|f6e2d38a 03|00921a47|80000702|f2e21db3 03|0092eaeb|80000702|15834dbf 03|00931e0d|80000702|5f0b7891 03|00933c68|80000702|b4980c5d 

即使我可以使它像这样工作 ,当我需要stream真正的数据,如video,audio等,到服务器(我知道我可以从套接字二进制数据传递一个Buffer对象,并使用这个: https ://github.com/substack/node-binary )和套接字无法处理二进制数据,我会损坏数据权利?

我不是一个专家,但我试图调查这一点,尽我所能,即使这不能解决,我想有人可以告诉我,如果我是正确的或只是我搞砸了:)

好吧,我的回答是在同一个文件 ,如果我不调用networking模块返回的套接字对象setEncoding(),我可以收到一个普通的二进制缓冲区,我可以随意parsing,所以这似乎成为可能。

仍然收到的数据不是0(字节5,6,7和8有128 0 7 2),所以我需要知道如何正确parsing二进制数据,但至less现在,这似乎是可能的。

问候,阴影。

这不是一个编码问题(你不是搞砸了)。 我能find的最接近的解释是Red5的来源:

OutboundHandshake.java:96

不知何故该字段用于传输实现的版本。