Fájlok folyamatos kiszolgálása
Készítünk egy online node.js alapú alkalmazást, ahol a kliens tölt fel mp3-at, a szerver meg egy másiknak kiszolgálja. Minden szépen működik, amíg nem akarom streamesíteni az egészet.
Felfele szépen darabok ravágom kliens oldalon és chunkonként töltöm fel websocketen keresztül a bináris adatot, egy streamWriterrel írom a diskre.
A probléma a letöltésnél kezdődik, nem tudom rávenni a szervert (alap esetben express-t, de mást sem), hogy a Chrome/FF <audio> tagjának kérésére az egész fájlt szolgálja ki. Mindig a kérés pillanatában létező fájlméretet veszi figyelembe (és nem törődik pl. a Content-Length headerrel, EOF-nak veszi az "éhezést").
Van erre valakinek ötlete? (Hogy hogy lehet HTTP streamet megvalósítani.)
■ Felfele szépen darabok ravágom kliens oldalon és chunkonként töltöm fel websocketen keresztül a bináris adatot, egy streamWriterrel írom a diskre.
A probléma a letöltésnél kezdődik, nem tudom rávenni a szervert (alap esetben express-t, de mást sem), hogy a Chrome/FF <audio> tagjának kérésére az egész fájlt szolgálja ki. Mindig a kérés pillanatában létező fájlméretet veszi figyelembe (és nem törődik pl. a Content-Length headerrel, EOF-nak veszi az "éhezést").
Van erre valakinek ötlete? (Hogy hogy lehet HTTP streamet megvalósítani.)
BufferStream block-stream Str
block-stream
Streaming audio from a Node.js server to HTML5 <audio> tag
Using NodeJS to Stream a Radio Broadcast
Taking Baby Steps with Node.js – Pumping Data Between Streams
Megvan a megoldás
Poetro segítségével megvan a megoldás. A Content-Range header beállítása volt a megoldás.
206-os HTTP headert küldve, a kapcsolatot mindig lezárva és jelezve hogy melyik részt küldtem el (mettől meddig) és mennyi az összes működik.
Sajnos a Flash nem támogatja ezt a típusú streamet, de a HTML5 natív tagek igen.