Friday 3 November 2017

Createreadstream binära alternativ


Ive varit googling detta och tittar runt stackoverflow ett tag men havent hittade en lösning - därmed posten. Jag leker med Node. js och WebSockets av nyfikenhet. Jag försöker att strömma lite binär data (en mp3) till klienten. Min kod hittills är nedan men fungerar självklart inte som avsedd. Jag misstänker att mitt problem är att jag faktiskt inte skickar binär data från servern och skulle vilja ha några clarificationhelp. Heres min server. Samtalet till avkodning slutar alltid i feluppringningen. Jag antar att detta beror på att det tar emot dåliga data. Så min fråga är hur jag riktigt streamar filen som binär. Jag fixade det här problemet med en kombination av att ta bort kodningen: binär parameter från alternativen som passerade till createReadStream () och lösningen på. Som enligt några av mina kommentarer, när jag uppdaterade alternativen createReadStream spelades den första chunk men alla andra bitar utförde onError callback från decodeAudioData (). Lösningen i länken ovan fixade detta för mig. Det verkar som att decodeAudioData () är lite picky om hur de bitar det tar emot ska formateras. De borde vara giltiga bitar tydligen. Läsning av text och binära data med Node. js-läsbara strömmar Denna handledning kommer att förklara användningen och skapandet av node. js-läsbara strömmar: Versionsinformation Författare: Jeff Barczewski Publicerad: 3 augusti 2013 Taggar: nodejs, strömmar Nivå: Intermediate Förutsättningar: krypto, händelser, installera npm-moduler Node. js v0.10 (senaste stabila är v0.10.15 av detta skrivande), men strömmar har vanligtvis varit en del av Node. js från dess tidiga dagar Streams2 kan användas med äldre versioner av nod genom att använda npm-modulen läsbar ström Förbrukning eller användning av läsbara strömmar Enkelt exempel på att läsa en fil och echo den till stdout: Skapa en sha1-smältning av en fil och eko resultatet till stdout (liknande shasum): Data händelsen avfyras på den läsbara strömmen för varje bit av data, så du uppdaterar uppdelningen med för varje bit medan du går, då slutänden slutändan avfyras när strömmen är slut så att du kan mata ut det slutliga resultatet. Observera att varje gång du ringer. on () för att registrera en lyssnare returneras den ursprungliga strömmen så att du enkelt kan kedja metoder. Med Node. js 0.10 finns det ett bättre sätt att konsumera strömmar. Det läsbara gränssnittet gör det enklare att arbeta med strömmar, särskilt strömmar där du vill göra andra saker mellan att skapa en ström och använda strömmen. Dessa nyare Läsbara strömmar är dragströmmar där du begär data när du läses för det istället för att ha data som drivs till dig. Nyckeln till att förstå detta exempel är att med de nya streams2 Readable gränssnittet kommer en läsbar händelse att sändas så snart data finns att läsa och du kan ringa. read () för att läsa bitar av det. En gång finns det inte mer data tillgänglig. läs () returnerar null, men då återkommer en annan läsbar händelse igen när data är tillgänglig igen. Detta fortsätter till slutet av filen när slutet avfyras som tidigare. Producera en läsbar ström För att kunna använda strömmar med filsystemet eller från http kan du använda kärnans fs och http-metoder för att skapa en ström, men hur skulle du skapa din egen ström och fylla den med data Det här kan vara data från en databas eller från ett antal källor. Här är ett exempel på att skapa en läsbar ström som genereras av slumpmässig binär data och sedan hashing det som tidigare. Detta skulle vara användbart vid skapande av strömmar för testning: Obs: Efter läsning () heter vi, bör vi fortsätta läsa tills vi är färdiga eller tills push () returnerar false. Använda Streams2 med äldre Node. js-versioner Om du vill göra den här koden med Node. js äldre än 0,10 kan du inkludera ett beroende för läsbar ström i paketet. json och ändra rad 5 för att läsa: Detta kommer att använda den ursprungliga Läsbar ström om Node. js-versionen är 0,10 och om inte, laddar den modulen för polyfil läsbar ström och använder den därifrån. Pausa återuppta strömmen och Streams2 Eftersom flöden ibland kan ge data snabbare än en applikation kan konsumera, innehåller strömmar möjligheten att pausa och data buffras tills strömmen återupptas. Innan strömmen2 behöver du noggrant uppmärksamma att pausa och återuppta metoder samt att buffra data tills de återupptas. Men läsbar från streams2 (Node. js 0.10 eller via läsbart flödespaket) implementerar den funktionen för dig och strömmar kopplas automatiskt till tills. read () heter. Du kan också pakka in gamla strömmar med en läsbar för att implementera det nya gränssnittet på den gamla strömmen: En annan situation där du behöver oroa dig för paus och återuppta är om din konsumtionskod använder det gamla push-stilgränssnittet. on (39data39, lyssnare). Detta sätter strömmen i bakåtkompatibilitetsläge och du måste ringa. pause () och. resume () för att kontrollera hastigheten på data som kommer till din applikation. Se Stream API-dokumenten för detaljer om du använder det äldre gränssnittet i din kod. Objektströmmar Inledningsvis när strömmar introducerades indikerade det officiella API att data-bitar som strömmade skulle vara buffertar eller strängar, men många användare fann att det var bra att även kunna strömma objekt. Streams2 i Node. js 0.10 lagde ett objektläge till strömmar för att formalisera hur detta ska fungera. När i objektläget. läs (n) returnerar helt enkelt nästa objekt (ignorerar n). Om du vill byta en ström till objektläge ställer du in egenskapen ObjectMode till sant i alternativen som används för att skapa din läsbara ström Så du kan använda objekt i strömmar lika enkelt som du kan använda buffertar och strängar, men den enda begränsningen är att föremålen du Passet kan inte vara noll eftersom det kommer att indikera att strömmen har slutat. Node. js läsbara strömmar är flexibla och enkla Node. js läsbara strömmar är lätta att konsumera och även enkla att konstruera. Du kan inte bara strömma binära och strängdata utan även objekt och utnyttja fortfarande strömfunktionen. Jag hoppas att du haft denna snabba rundtur i läsbara strömmar, låt mig veta om du har några frågor. För ytterligare läsning Dela den här sidanUppdatera: du ska använda csv-parser istället, den har samma API som det här men är snabbare En snabb CSV-parser skrivet i javascript. Använder buffert i nod eller Uint8Array i webbläsaren (tack vare bops). Medan de flesta CSV-parsrar analyserar strängdata konverterar detta bibliotek aldrig binär data till icke-binär data. Det är snabbt eftersom det aldrig skapar Numbers, Strings, Arrays eller Objects - endast binära representationer av linjen och cellvärdena i CSV, vilket betyder att JS VM spenderar mindre tid på att göra saker som att avkoda UTF8-strängar och gå fram och tillbaka mellan C och JS . Som standard delas det bara linjer, men du kan använda de angivna. line - och. cell-metoderna för att analysera cellerna och cellvärdena. Parsar en 55 miljoner linje, 5,18 GB CSV på lite över 1 minut. Se en demo som körs i webbläsaren på RequireBin: Du kan också ladda CSV på internet via frågesträng, till exempel: Stora CSV: er kan vara långsamma att göra på grund av terminalåtergivaren som används i demo. Du kan använda det på två sätt: Programmatiskt i Node-program, eller från kommandoraden. parser är en duplex-ström - du kan pipa data till den och det kommer att avge en buffert för varje rad i CSV om json är truthy så kommer parser-strömmen att avge fullständigt avkodade JSON-objekt som representerar varje rad av csv (kombinerad med rubriken rad) Parser celler från en linjebuffert. Returnerar en uppsättning cellbuffertar. För att köra testpaketet, aktivera först följande kommando inom repo, installera utvecklingsberoende: Kör sedan testerna: MIT-licensen (MIT) Copyright (c) 2014 redpelicans Tillstånd beviljas härmed, gratis till någon som erhåller en kopia av denna programvara och tillhörande dokumentationsfiler (quotSoftwarequot), att handla i Programvaran utan begränsning, inklusive, men inte begränsat, rätten att använda, kopiera, modifiera, fusionera, publicera, distribuera, sublicense och andor sälja kopior av Programvaran och tillåta personer till vilka Programvaran är inredd att göra det, under förutsättning att följande villkor är uppfyllda: Ovanstående upphovsrättsmeddelande och detta meddelande om tillstånd ska inkluderas i alla kopior eller väsentliga delar av Programvaran. PROGRAMVARAN LEVERAS kvoterna ISquot, UTAN GARANTI AV NÅGOT SÄTT, UTTRYCKLIGT ELLER UNDERFÖRSTÅDD, INKLUSIVE MEN INTE BEGRÄNSAT TILL GARANTIER FÖR SALGBARHET, EGNETHET FÖR ET SÄRSKILT SYFTE OCH NONINFRINGEMENT. INNEHÅLLSFÖRSÄLJARE ÄR INTE HÄNDIGT FÖR ANSVAR, SKADOR ELLER ANNAN ANSVAR, OM EN ANSVAR AV KONTRAKTET SKADER ELLER ANNAN, UTAN ELLER I SAMBAND MED PROGRAMVARAN ELLER ANVÄNDNINGEN ELLER ANDRA FÖRHANDLINGAR I PROGRAMVARA. Det har aldrig varit lättare att hantera utvecklingslag med olika behörigheter och flera projekt. Läs mer om privata paket och organisationshellip

No comments:

Post a Comment