Show HN: SpaceMagic, a real-time node.js framework
spacemagic.ioWas this already in progress or made in response to meteor (and firebase)?
I'm sure a lot of us could rip the real-time/live updating/auto-synchronizing (pick your term) engine out of our current web apps and package it up in a tiny framework without much effort.
The idea came about a year and a half ago. We seriously started working on it, and committing to a public github repository, about six months ago. Meteor's release just changed our public announcement date from "sometime in the near future" to "Friday."
node.js has real-time guarantees?
Exactly what I was thinking. This is the third recent post to HN using "real-time" in this fashion. They're hijacking a term which already has widespread use and which, "doesn't mean what they think it does," to hijack a line from Princess Bride.
I use "real-time" in this fashion because describing it as "soft real-time" seems weird.
Didn't we call websites that update without a manual page reload "AJAX" just a few minutes ago? And yes, even if there's no XML present, but at least it's an abuse of a pretty new, web-specific term.
I propose we call all that stuff "FEFYOM" (Fast Enough For You Old Man) from now on.
AJAX is where you click on something and then the page updates. Comet is where the page updates without the user having to initiate anything.
Fascinating...so wrapping an Ajax call inside a window.setInterval automatically switches it to "Comet"?
Source?
If I ever write a manga with cute girls travelling the galaxy in a super-fancy ship, I'm going to name the ship the "Fefyom."
We should use the term "auto-synchronizing" insteaf of real-time
You know those journalist pages where they report what's happening at an event with immediate updates? It's called "live updating". Why don't we use that term? TV news stations say "LIVE" when it's current events happening now. "Real time" as used for this Ajax technique means that the page is auto-updating with events happening now. That's "live". Any seconders?
In fact, in Meteor, the relevant packages are called "livedata" and "liveui".
In the docs, Meteor usually tries to use the word "reactive" or sometimes "automatic," thought "realtime" does seem to have slipped in in some places.
What's a real-time guarantee?
Sure, anything using the Internet as a conduit, and having to scale to an unpredictable number of users, is incapable of a realtime-guarantee in the technical sense but in terms of user perception it will be real-time in normal conditions. Realtime-y. ;)
Could someone please explain: How does this compare to Meteor?
That's fair to ask. We're both trying to solve the same problems in similar ways. Both of us use Node and MongoDB and both of us keep everything automatically synched and up to date between the client and server.
We do things a little differently. We built SpaceMagic while working on a real-time web app of our own and did so with the goal of making our work as easy as possible. Ideally, we want to make developing realtime apps as easy as it is to make non-realtime apps. First, we support semantic HTML templates, allowing developers to turn their mocks into working prototype applications with a bit of javascript. Second, we make developers able to write validation and other important code once and have it run on both the client and the server. Third, SpaceMagic is released as just another npm package that works with your preexisting Node install and packages.
Thanks for the great explanation. So it might be more comparable to something like SocketStream + MVC pattern?
My thought exactly.
back button an issue for anyone else?
Me too, Chrome 18 on OSX Lion - Because of this I have instant dislike of this framework.
Yep. thanks for hijacking my browser.
Looking into it now, it has something to do with iframes and pushstate.
Fixed
yep, back button is broken