Hacker News new | ask | show | jobs
by _query 1508 days ago
It's using Postgres pg_notify to subscribe to tables and using a WebSocket server to distribute the changes. The table watcher is written in Haskell and based on the IHP haskell framework. Using Haskell makes it very easy and efficient to deal with lot's of active sessions in parallel.

You can find the source code here https://github.com/digitallyinduced/ihp/blob/master/IHP/Data... if you're interested :)

1 comments

That's a similar approach to supabase. Why reinvent the wheel? (I'm asking out of curiosity here).

Why websockets? Do you allow bidirectional communication? If not, wouldn't it be better to use http push for easier scaling?

> That's a similar approach to supabase

I'm a Supabase dev and the maintainer of Supabase Realtime and just wanted to clarify that Realtime works by listening to Postgres' logical replication because we realized early on that it scales better and circumvents the limitations of pg_notify; for example notify has a payload limit of 8000 bytes.

> That's a similar approach to supabase. Why reinvent the wheel?

We've initially built the technology already for IHP DataSync (https://ihp.digitallyinduced.com/Guide/realtime-spas.html). So we used what we already had here :)

> Why websockets?

We also use the WebSockets to do write operations. This allows for lower latency than doing a HTTP call for any API call. Additionally we run all operations in parallel. With HTTP push we wouldn't be able to easily run all these operations in parallel.

Cool. Thanks for answering.
> That's a similar approach to supabase. Why reinvent the wheel?

Supabase is a copy of Firebase. Same question?

Supabase real time is open source while firebase is not.

You cannot provide firebase as part of your services because you cannot self host it.

I asked why to understand the reason for another open source implementation.

Point being you can usefully have two or more of the same type of thing, even if their only difference is the quality of the team building them. That's why the market sustains more than one car of each type.