[{"data":1,"prerenderedAt":576},["ShallowReactive",2],{"project-9050970":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":45,"post_text":48,"what":49,"said":74,"maker_in_thread":146,"shape":159,"grid":164,"attempts":538,"same_week":539,"maker_shows":38,"maker_hidden":568,"reader_version":569,"card":570},"9050970","websocketd","A Unixy approach to WebSockets","title","Show HN: A Unixy approach to WebSockets","http:\u002F\u002Fwebsocketd.com\u002F","websocketd.com","joewalnes",1423952713,2015,421,140,26,2565,2,"legend","dev_tools","websocket server","cli",[24,25,26,21,27],"websocket","unix","stdin stdout","cgi","curious",0.029,{"positive":31,"neutral":32,"mixed":18,"critical":33},12,37,13,64,{"docs":36,"idea":39,"performance":42,"design":43,"execution":44},{"positive":37,"critical":38},0,1,{"positive":40,"critical":41},6,5,{"positive":38,"critical":41},{"positive":38,"critical":37},{"positive":37,"critical":18},[37,37,37,37,37,37,37,37,37,37,37,46,46,46,18,18,41,38,41,18,41,46,38,38,46,18,46,37,37,46,41,47,47,41,46,18,46,46,46,46],3,4,null,{"problem":50,"audience":57,"pricing":48,"motivation":66,"time_to_build":48,"stack":70,"openness":71,"stage":72,"team_size":73},{"value":51,"source":52,"evidence":53},"Writing WebSocket endpoints requires building socket servers and handling the protocol.","maker",[54],{"id":55,"by":11,"text":56},"9052839","It allows you to write a WebSocket end point, in any programming language, without having to deal with building socket servers, dealing with WebSocket protocol…",{"value":58,"source":59,"evidence":60},"Developers and sysadmins building WebSocket endpoints quickly.","inferred",[61,62],{"id":55,"by":11,"text":56},{"id":63,"by":64,"text":65},"9051787","runewell","This is perfect for admin tools. I'd rather parse stdout strings than code a custom API.",{"value":67,"source":52,"evidence":68},"Unixy approach to WebSockets: write endpoints as simple scripts.",[69],{"id":55,"by":11,"text":56},[],"open_source","launched","unknown",{"praise":75,"objections":89,"requests":105,"questions":113,"alternatives":124},[76],{"value":77,"source":78,"evidence":79},"Elegant, useful for prototyping and admin tools.","commenter",[80,84,88],{"id":81,"by":82,"text":83},"9051597","jkarneges","Elegant approach. Reminds me of inetd.",{"id":85,"by":86,"text":87},"9051572","dkarapetyan","This is cool. I can see this being used for prototyping and validating an idea before going full steam ahead with a more scalable framework.",{"id":63,"by":64,"text":65},[90],{"value":91,"source":78,"evidence":92},"One process per connection has high overhead at scale.",[93,97,101],{"id":94,"by":95,"text":96},"9051195","elierotenberg","Unless you need to handle a very small number of concurrent connections, using 1 process per connection seems to be a huge overhead, although I can think of some use cases.…",{"id":98,"by":99,"text":100},"9057671","kragen","> Each inbound WebSocket connection runs your program in a dedicated process. Connections are isolated by process. That sounds bad; it is like “CGI, twenty years later”, as they…",{"id":102,"by":103,"text":104},"9051015","detaro","Looks very nice for quick prototype kind of things in any language or to make existing tools quickly available to a small circle of users! for larger-scale usage the overhead…",[106],{"value":107,"source":78,"evidence":108},"Support for pub\u002Fsub and server-initiated messages.",[109],{"id":110,"by":111,"text":112},"9051779","ianbicking","I don't understand how I'd use this. WebSockets are generally for server-initiated events, but this doesn't make it very easy to initiate events on the server. Usually it will be…",[114],{"value":115,"source":78,"evidence":116},"How are message boundaries handled?",[117,121],{"id":118,"by":119,"text":120},"9053460","kalmi10","How are message boundaries handled? WebSockets are message-based. UNIX streams are not.",{"id":122,"by":11,"text":123},"9054194","websocketd treats each line as a message. i.e. boundaries are marked with \\n",[125,132,139],{"value":126,"source":78,"evidence":127},"websockify",[128],{"id":129,"by":130,"text":131},"9051028","NathanOsullivan","A project in a similar vein is websockify ( https:\u002F\u002Fgithub.com\u002Fkanaka\u002Fwebsockify ) , which makes an existing app with a TCP endpoint available over websockets.",{"value":133,"source":78,"evidence":134},"netcat",[135],{"id":136,"by":137,"text":138},"9051955","romanpoet","Why is this better than netcat? https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNetcat",{"value":140,"source":78,"evidence":141},"EventSource",[142],{"id":143,"by":144,"text":145},"9051200","lordlarm","For simple one-directional communication (Server to client(s)) as shown in the example, it may for many people be simpler to use EventSource [1] I've used this for UI's where the…",{"comments":147,"answered":148,"key":149},17,7,[150,153,156],{"id":151,"text":152},"9052805","A philosophy is neither right nor wrong. It's a philosophy, one that you choose to subscribe to, or not.",{"id":154,"text":155},"9051031","OP here. Something I forgot to mention on the page is how much this simplified life for a server admin. Using \"ps\" you can see each connection, the memory overhead, CPU usage.…",{"id":157,"text":158},"9052801","WebSockets are message based.",{"commenters":160,"max_depth":161,"maker_replies":147,"first_comment_mins":162,"lifespan_hours":163},79,10,18,57,[165,169,173,176,180,183,185,187,190,192,195,197,199,202,205,207,210,214,217,220,222,224,227,230,233,236,238,240,243,246,249,252,254,256,259,261,262,265,267,271,274,277,279,283,286,289,291,293,295,297,299,302,306,308,311,313,316,320,322,325,328,330,333,337,341,343,346,348,351,354,355,358,361,363,364,366,368,370,372,375,376,378,380,382,385,387,390,392,394,398,401,403,408,411,413,415,418,421,423,425,427,429,431,433,436,438,439,442,445,447,449,451,455,459,463,464,467,471,473,476,478,482,484,486,487,489,494,496,501,504,508,511,514,519,521,524,527,528,532,536],[166,37,37,167,168,37],"9051402","other\u002Fneutral\u002Fidea","jeremiep",[170,37,37,171,172,37],"9051470","commenter\u002Fneutral\u002Fidea","chriswarbo",[174,37,37,171,175,37],"9051532","nine_k",[177,37,37,178,179,37],"9052301","commenter\u002Fneutral\u002Fnone","tracker1",[181,37,37,171,182,37],"9051480","ayani",[184,37,37,171,168,37],"9052526",[186,37,37,178,86,37],"9051557",[188,37,37,178,189,37],"9051969","cheeze",[191,37,37,178,86,37],"9052039",[193,37,37,178,194,37],"9052098","sparkie",[196,37,37,178,86,37],"9052107",[198,37,37,178,194,37],"9052307",[200,37,37,178,201,37],"9052437","pjmlp",[203,37,37,171,204,37],"9052388","IshKebab",[206,37,37,178,168,37],"9052520",[208,37,37,178,209,37],"9051578","ebbv",[211,37,37,212,213,37],"9051793","other\u002Fneutral\u002Fnone","woodman",[215,37,37,212,216,37],"9051907","Curmudgel",[218,37,37,212,219,37],"9052040","mjevans",[221,37,37,212,216,37],"9053624",[223,37,37,178,209,37],"9056584",[225,37,37,171,226,37],"9051644","barrkel",[228,37,37,171,229,37],"9051903","sjolsen",[231,37,37,178,232,37],"9052186","nailer",[234,37,37,178,235,37],"9052335","lawl",[237,37,37,178,232,37],"9052503",[239,37,37,178,232,37],"9055941",[241,37,37,171,242,37],"9051905","swhipple",[244,37,37,178,245,37],"9052348","ackalker",[247,37,37,212,248,37],"9052689","Freaky",[250,37,37,171,251,37],"9051901","winter_blue",[253,37,37,178,179,37],"9052309",[255,37,37,178,168,37],"9052512",[257,37,37,178,258,37],"9051976","segmondy",[260,37,37,178,204,37],"9052389",[151,37,37,178,11,38],[263,37,37,178,264,37],"9052100","xorcist",[266,37,37,178,168,37],"9052537",[268,37,46,269,270,37],"9052736","project\u002Fneutral\u002Fnone","asergeyev",[272,37,37,212,273,37],"9053337","jqgatsby",[275,37,46,269,276,37],"9054276","yawaramin",[154,38,37,278,11,38],"project\u002Fpositive\u002Fexecution",[280,38,46,281,282,37],"9051307","project\u002Fneutral\u002Fdocs","comboy",[284,38,46,281,285,37],"9051431","jakejake",[287,38,46,269,288,37],"9051821","itsbits",[290,38,46,269,179,37],"9052319",[157,38,37,292,11,38],"maker\u002Fneutral\u002Fnone",[294,38,37,178,179,37],"9055052",[94,18,46,296,95,37],"project\u002Fneutral\u002Fidea",[298,18,46,269,270,37],"9051234",[300,18,38,301,182,37],"9051515","project\u002Fcritical\u002Fperformance",[303,18,46,304,305,37],"9051577","project\u002Fneutral\u002Fperformance","platz",[307,18,46,304,285,37],"9051603",[309,18,46,304,310,37],"9051613","leephillips",[312,18,38,301,305,37],"9051620",[314,18,46,304,315,37],"9052120","danieldk",[317,18,41,318,319,37],"9057124","project\u002Fpositive\u002Fperformance","rapind",[321,18,37,178,270,37],"9059340",[323,18,37,167,324,37],"9051688","estava",[326,18,37,167,327,37],"9052226","skrebbel",[329,18,37,318,11,38],"9052821",[331,18,46,296,332,37],"9051622","michaelmior",[334,18,38,335,336,37],"9052024","project\u002Fcritical\u002Fidea","Rapzid",[338,46,41,339,340,37],"9052008","maker\u002Fpositive\u002Fnone","Lerc",[342,46,37,339,11,38],"9052806",[344,47,46,296,345,37],"9051328","riobard",[347,47,46,296,175,37],"9051514",[349,47,46,269,350,37],"9051982","dangayle",[352,47,46,296,353,37],"9052194","espadrine",[110,41,38,335,111,37],[356,41,46,296,357,37],"9052053","andrewstuart2",[359,41,41,360,179,37],"9052323","project\u002Fpositive\u002Fidea",[362,41,37,296,11,38],"9052827",[129,40,46,269,130,37],[365,40,37,212,11,38],"9051033",[367,40,46,269,353,37],"9051089",[369,40,37,269,11,38],"9051099",[371,40,46,269,270,37],"9051205",[373,40,37,212,374,37],"9053121","cpncrunch",[98,148,38,301,99,37],[377,148,46,304,270,37],"9059334",[379,148,38,301,99,37],"9059518",[381,148,37,318,11,38],"9059943",[383,148,37,384,99,37],"9061086","commenter\u002Fneutral\u002Fperformance",[386,148,37,178,270,37],"9060493",[102,388,46,389,103,37],8,"project\u002Fmixed\u002Fperformance",[391,388,37,304,11,38],"9051026",[393,388,46,304,168,37],"9051442",[395,388,46,396,397,37],"9051039","project\u002Fmixed\u002Fidea","hippich",[399,388,38,301,400,37],"9051583","phamilton",[402,388,37,384,397,37],"9057259",[404,405,41,406,407,37],"9052862",9,"project\u002Fpositive\u002Fnone","vram22",[409,161,46,296,410,37],"9051363","Udo",[143,412,38,335,144,37],11,[414,412,37,212,270,37],"9051254",[416,412,37,212,417,37],"9051975","stephenr",[419,412,37,212,420,37],"9052476","tokenizerrr",[422,412,37,212,417,37],"9052843",[424,412,37,212,420,37],"9057587",[426,412,37,212,417,37],"9057639",[428,412,37,212,420,37],"9057662",[430,412,37,212,417,37],"9059999",[432,412,37,178,270,37],"9060503",[434,31,46,296,435,37],"9051194","minimax",[437,31,46,269,270,37],"9051212",[81,33,41,360,82,37],[440,33,46,296,441,37],"9051980","colanderman",[443,33,37,212,444,37],"9052213","fit2rule",[446,33,37,178,441,37],"9052720",[136,448,46,296,137,37],14,[450,448,46,296,441,37],"9051977",[452,453,41,360,454,37],"9051275",15,"keyle",[456,457,46,269,458,37],"9051910",16,"aabajian",[460,457,46,461,462,37],"9051999","project\u002Fneutral\u002Fdesign","olalonde",[63,147,41,360,64,37],[465,162,41,406,466,37],"9051040","frknbasaran",[468,469,46,269,470,37],"9051166",19,"angersock",[472,469,37,212,270,37],"9051284",[474,469,37,212,475,37],"9052101","cturner",[477,469,37,212,11,38],"9052885",[479,480,46,296,481,37],"9051791",20,"hurin",[483,480,46,296,64,37],"9051860",[485,480,38,335,481,37],"9051898",[55,480,37,296,11,38],[85,488,41,360,86,37],21,[490,491,38,492,493,37],"9053265",22,"project\u002Fcritical\u002Fdocs","MatthewWilkes",[495,491,46,296,270,37],"9057113",[497,498,46,499,500,37],"9051736",23,"project\u002Fneutral\u002Fexecution","spiralpolitik",[502,498,37,503,11,38],"9052890","maker\u002Fneutral\u002Fexecution",[505,506,38,335,507,37],"9051743",24,"cypher543",[509,506,46,461,510,37],"9052146","spoiler",[512,506,37,513,11,38],"9052848","maker\u002Fneutral\u002Fdesign",[515,516,41,517,518,37],"9052608",25,"maker\u002Fpositive\u002Fdesign","tomerbd",[520,516,37,513,11,38],"9052852",[522,16,41,406,523,37],"9051750","nichochar",[118,525,38,526,119,37],27,"project\u002Fcritical\u002Fexecution",[122,525,37,503,11,38],[529,530,38,526,531,37],"9051117",28,"nubb",[533,534,41,360,535,37],"9051862",29,"curiously",[537,534,37,292,11,38],"9052830",[],[540,545,549,554,558,563],{"id":541,"name":542,"points":543,"category":544},"9040841","Let's Chat",350,"productivity",{"id":546,"name":547,"points":548,"category":20},"9047086","Littlebox",192,{"id":550,"name":551,"points":552,"category":553},"9056423","NomadHouse",127,"web_saas",{"id":555,"name":556,"points":557,"category":20},"9058872","Calc",94,{"id":559,"name":560,"points":561,"category":562},"9040423","Portal",86,"infrastructure",{"id":564,"name":565,"points":566,"category":567},"9050379","Sierpinski Valentine",72,"learning_science",false,"v2",{"id":571,"name":5,"line":6,"ai":568,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":572,"top":18,"kw":573,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":574,"url":9,"mix":575,"praise":77,"objection":91,"sub":21},9050970,0.03,[24,25,26,21,27],"0000000000033322515253113230035445323333",[31,32,18,33],1793990920318]