Live data from Hacker News

Writing a toy WebSocket server from scratch

alexanderell.is

1–10 of 20 posts

Re: Writing a toy WebSocket server from scratch

#2
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.

Re: Writing a toy WebSocket server from scratch

#3
post #2

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…

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.

Re: Writing a toy WebSocket server from scratch

#4
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/

Re: Writing a toy WebSocket server from scratch

#5
“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.

Re: Writing a toy WebSocket server from scratch

#6
post #4

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…

This looks very cool, thanks for creating/sharing it. Might have to dust off my Erlang for this.

Re: Writing a toy WebSocket server from scratch

#7
post #3
post #2

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…

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 bedr…

> 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!

Re: Writing a toy WebSocket server from scratch

#8
post #4

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…

Sort of like Project Euler but for network programming? Very cool!

Re: Writing a toy WebSocket server from scratch

#10
post #5

“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.

It's like the people who "built a search engine from scratch", or "built a web browser from scratch". It's as simple as pulling a Chromium repo, or plugging into Bing's API!
Post reply on HN