[HN Gopher] Writing a toy WebSocket server from scratch
___________________________________________________________________
Writing a toy WebSocket server from scratch
Author : otras
Score : 47 points
Date : 2022-08-29 01:57 UTC (1 days ago)
(HTM) web link (alexanderell.is)
(TXT) w3m dump (alexanderell.is)
| ok_dad wrote:
| I love this article! I'm going to start my own series of "toys"
| for my personal edification now, I never thought doing something
| half-assed would be so much fun! I mean that with the utmost of
| respect, too, because I have been stressing so much lately trying
| to build something "commercializable" but I should have been
| focusing on educating myself and having fun with tiny projects
| like this, which can be completed in a few days.
| keyle wrote:
| You'll find that most successful software out there that
| attempted to improve or innovate started as a "half assed" toy.
|
| Otherwise the dude would have given up before it's complete.
|
| No one on their own should aim at building a "cathedral". Build
| a hut. Then add a toilet cause it sucks to shit outside. Then a
| sewer system because it stinks. A tap to wash your hands. Might
| add a bed to sleep overnight. Make that a bedroom. Ok now it
| needs a shower.
|
| 2 years from now you have your "cathedral" and other people
| come shit in your toilet, so making it squeaky clean becomes a
| priority.
|
| People tend to forget the word software has "soft" in it.
| ok_dad wrote:
| > No one on their own should aim at building a "cathedral".
| Build a hut. Then add a toilet cause it sucks to shit
| outside. Then a sewer system because it stinks. A tap to wash
| your hands. Might add a bed to sleep overnight. Make that a
| bedroom. Ok now it needs a shower.
|
| Nice way to look at it!
| convolvatron wrote:
| some peers...I think Chrome...will shut down your connection if
| you don't have a WS layer keep alive
| jstanley wrote:
| I like writing toy servers too, but I don't get a lot of
| opportunities, so my latest project is a programming challenge
| that presents a new protocol spec every 2 weeks for people to
| implement, and automatically tests the implementations[0].
|
| OP says:
|
| > Goal: write a basic server that can handle the WS handshake and
| parse an incoming WS frame to see the message sent from the
| client
|
| > Non-goals: writing a robust or real HTTP server, writing a
| fully compliant WS server, or handling all edge cases
|
| This is a great way to get started with something that you don't
| yet understand. I sometimes think of it as implementing "just
| enough to trick people into thinking that it works".
|
| FWIW, I think the implementation in this post has a bug whereby a
| client that sends half an HTTP request will block the entire
| server from accepting further connections, because
| handle_request() makes blocking calls to recv() until it has a
| full request, and the program can't accept new connections until
| handle_request() returns. That's the spirit!
|
| [0] https://protohackers.com/
| macintux wrote:
| This looks very cool, thanks for creating/sharing it. Might
| have to dust off my Erlang for this.
| paulgb wrote:
| Sort of like Project Euler but for network programming? Very
| cool!
| paxys wrote:
| "If you wish to make an apple pie from scratch, you must first
| invent the universe" - Carl Sagan
|
| It's interesting to see what different people mean when they say
| "from scratch". In this case the lowest abstraction is (what
| seems to be) Python's TCP library.
___________________________________________________________________
(page generated 2022-08-30 23:00 UTC)